2011-08-22 45 views
10

Sono sconcertato. Sto provando a configurare la mia app per rispondere alla scheda SD diventando disponibile/andando offline, ma il mio ricevitore non viene mai chiamato!MEDIA_MOUNTED trasmissione non ricevuta

posso vedere l'evento in onda, e altre applicazioni di rispondere:

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

E il mio manifesto ha dichiarato il ricevitore:

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

E il mio ricevitore ha un metodo 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("#########", "##############################################################"); 
    } 
} 

Eppure la cosa & ^% $ 'non causerà Test.onReceiv e() per sparare. qualche idea?

risposta

39

Non puoi essere serio. A quanto pare ho bisogno di aggiungere un filtro aggiuntivo per il tipo di dati.

Lasciando la risposta per "la persona accanto" ...

<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

Sembra che ai documenti ufficiali manchi lo schema, il che è sicuramente fastidioso dal momento che il loro codice non funzionerà. http://developer.android.com/reference/android/os/Environment.html – smith324

+1

Per le persone che collegano i ricevitori in modo dinamico, è possibile chiamare addDataScheme ("file") nell'istanza IntentFilter. – dhakim

8

Si tenta di aggiungere il tag <data android:scheme="file" /> nel <intentfilter>, altro fare la registrazione in fase di esecuzione.
In fase di esecuzione, creare un oggetto del ricevitore broadcast e passarlo a registerReceiver(obj).

+0

Grazie, l'ho capito pochi minuti prima di pubblicare. –

+0

Quindi è necessario aggiungerlo all'elenco delle domande con risposta. – Ronnie

+1

Umm, è ... ed è stato, prima ancora di aver inviato una risposta. Hai aggiunto una risposta circa 15 minuti dopo che l'ho fatto. –