2011-08-22 8 views
10

Estoy desconcertado. Intento configurar mi aplicación para que responda que la tarjeta SD está disponible/desconectada, ¡pero mi receptor de emisión nunca recibe llamadas!transmisión MEDIA_MOUNTED no se recibió

puedo ver el evento que se esté emitiendo, y otras aplicaciones de responder:

08-21 23:43:04.405: DEBUG/Ringer(275): -- intent.getAction() =android.intent.action.MEDIA_MOUNTED 

Y mi manifiesta ha declarado el receptor:

<receiver android:name=".Test" android:enabled="true"> 
     <intent-filter> 
      <action android:name="android.intent.action.MEDIA_MOUNTED" /> 
     </intent-filter> 
    </receiver> 

Y mi receptor tiene un método OnReceive:

public class Test extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.d("#########", "##############################################################"); 
     Log.d("#########", "Obligitory snarky and/or funny logging comment..."); 
     Log.d("#########", "##############################################################"); 
    } 
} 

Sin embargo, la cosa & ^% $ 'no causará Test.onReceiv e() disparar. ¿Alguna idea?

Respuesta

39

No puede hablar en serio. Aparentemente, necesitaba agregar un filtro adicional para el tipo de datos.

Dejando la respuesta para "el tipo de al lado" ...

<receiver android:name=".Test" android:enabled="true"> 
    <intent-filter> 
     <action android:name="android.intent.action.MEDIA_MOUNTED" /> 
     <data android:scheme="file"/> 
    </intent-filter> 
</receiver> 
+1

Parece que a los documentos oficiales les falta el esquema, que sin duda es molesto ya que su código no funcionará. http://developer.android.com/reference/android/os/Environment.html – smith324

+1

Para las personas que enlazan receptores dinámicamente, puede llamar a addDataScheme ("archivo") en su instancia de IntentFilter. – dhakim

8

Se trate de añadir la etiqueta <data android:scheme="file" /> en el <intentfilter>, más haga el registro en tiempo de ejecución.
En tiempo de ejecución, crea un objeto de tu receptor de difusión y pásalo al registerReceiver(obj).

+0

Gracias, lo descubrí unos minutos antes de publicar. –

+0

Luego debe agregar esto a la lista de preguntas respondidas. – Ronnie

+1

Umm, lo es ... y lo estaba, incluso antes de enviar una respuesta. Agregaste una respuesta unos 15 minutos después de que lo hice. –

Cuestiones relacionadas