2011-08-22 13 views
10

Jestem zdziwiona. Próbuję skonfigurować moją aplikację, aby zareagowała na to, że karta SD będzie dostępna/będzie w trybie offline, ale mój odbiornik telewizyjny nigdy nie zostanie wywołany!Nie można odbierać transmisji MEDIA_MOUNTED

widzę to wydarzenie jest transmitowane, a inne aplikacje odpowiadając:

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

A mój manifest został odbiornik oświadczył:

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

A mój odbiornik ma onReceive metody:

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("#########", "##############################################################"); 
    } 
} 

Jednak & ^% $ 'ing rzeczą nie spowoduje Test.onReceiv e() na ogień. jakieś pomysły?

Odpowiedz

39

Nie możesz być poważny. Najwyraźniej potrzebowałem dodać dodatkowy filtr dla typu danych.

Pozostawienie odpowiedzi up dla „następnego faceta” ...

<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

Wygląda na to, że oficjalnym dokumentom brakuje schematu, co z pewnością jest denerwujące, ponieważ ich kod nie zadziała. http://developer.android.com/reference/android/os/Environment.html – smith324

+1

Dla osób dynamicznie łączących odbiorniki możesz wywołać addDataScheme ("file") w instancji IntentFilter. – dhakim

8

spróbować dodać tag <data android:scheme="file" /> w <intentfilter>, jeszcze zrobić rejestrację w czasie wykonywania.
W czasie wykonywania utwórz obiekt swojego odbiornika i przekaż go pod numer registerReceiver(obj).

+0

Dzięki, wymyśliłem to kilka minut przed opublikowaniem. –

+0

Następnie powinieneś dodać to do listy pytań. – Ronnie

+1

Umm, to jest ... i było, zanim nawet złożyłeś odpowiedź. Dodałeś odpowiedź około 15 minut po mojej. –

Powiązane problemy