2011-08-22 3 views
10

나는 당황합니다. SD 카드가 사용 가능하게되거나 오프라인으로 전환 될 때 앱이 응답하도록 구성하려고하지만 방송 수신기가 절대로 호출되지 않습니다.MEDIA_MOUNTED 방송을 수신하지 못했습니다.

내가 이벤트를 볼 수 있습니다

가 방송되고, 다른 응용 프로그램이 응답 :

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

을 그리고 내 매니페스트 수신기가 선언했다 :

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

그리고 내 수신기가 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("#########", "##############################################################"); 
    } 
} 

&^% $ '물건으로 인해 Test.onReceiv가 발생하지 않습니다. e() 발사. 이견있는 사람?

답변

39

심각하지 않습니다. 분명히 데이터 형식에 대한 추가 필터를 추가해야했습니다. "다음 사람"에 대한 답을 위로 떠나

...

<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

공식 문서가 스키마가 누락 된 것 같습니다. 코드가 실제로 작동하지 않으므로 당연히 짜증나게됩니다. http://developer.android.com/reference/android/os/Environment.html – smith324

+1

수신자를 동적으로 연결하는 사람들은 IntentFilter 인스턴스에서 addDataScheme ("file")을 호출 할 수 있습니다. – dhakim

8

당신은 <intentfilter><data android:scheme="file" /> 태그를 추가 시도는 다른 런타임에 등록을한다.
런타임에 브로드 캐스트 리시버의 개체를 만들고이를 registerReceiver(obj)에 전달하십시오.

+0

감사합니다. 게시하기 몇 분 전에 알아 냈습니다. –

+0

그러면 답변 된 질문 목록에이를 추가해야합니다. – Ronnie

+1

음, 그것은 ... 당신이 답변을하기도 전에 ...이었습니다. 내가 한 후 약 15 분 후에 답을 추가했습니다. –

관련 문제