문제

SDCard Mount 및 Unmount 이벤트를 감지하기 위해 Broadcastreceiver를 만들었지 만 전혀 이벤트를 전혀받을 수 없습니다. AndroidManifest.xml은 다음과 같습니다.

<receiver android:enabled="true" android:label="SDCardMountReceiver" android:exported="true" android:name="xxx.broadcasts.SDCardBroadcastReceiver">
    <intent-filter>
        <action android:name="android.content.Intent.ACTION_MEDIA_MOUNTED"></action>
        <!-- or <action android:name="android.content.Intent.ACTION_MEDIA_UNMOUNTED" />--></intent-filter>
</receiver>

그리고 sdcardmountreceiver 클래스 :

public class SDCardBroadcastReceiver extends BroadcastReceiver {
    public SDCardBroadcastReceiver() {
        super();
        System.err.println("constructor");
    }

    public void onReceive(Context context, Intent intent) {
        Log.d("SDCardBroadCastReceiver", "receive " + intent.getAction());
        System.err.println("jonathan receive " + intent.getAction());

    }
}
도움이 되었습니까?

해결책

그만큼 의지 Javadoc은 다른 조치를 지정합니다 : 이름 값. "Android.content.intent.action_media_mounted"대신 "android.intent.action.media_mount"를 사용하십시오.

다른 팁

또한 데이터 구성표를 "파일"으로 설정해야합니다.

   <intent-filter>
     <action android:name="android.intent.action.MEDIA_MOUNTED" />
     <data android:scheme="file" /> 
   </intent-filter>

참조: 안드로이드 개발자 스레드

방송 수신기를 프로그래밍 방식으로 등록하면 그 계획도 "파일"으로 설정해야합니다.

IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_MEDIA_MOUNTED);
filter.addAction(Intent.ACTION_MEDIA_REMOVED);
filter.addDataScheme("file");
mContext.registerReceiver(mExternalStorageReceiver, filter);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top