처음 게시 할 때 여기에 올 때가되었습니다. SD 카드가 장치에서 제거 된 것을 감지하려고하는데 내 브로드 캐스트 수신기가 이전 ICS 태블릿에서 제대로 작동하지만 (MEDIA_UNMOUNTED, BAD_REMOVAL 등의 의도 된 동작을 얻을 수 있음) 다른 태블릿에서는 android 4.2 아무것도 내가 SD 카드를 제거 할 때, 다음과 같은 의도의 행동 중 어느 것도 방송되지 발생하지 :SD 카드 제거 의도가 작동하지 않습니다.
MEDIA_BAD_REMOVAL
을MEDIA_EJECT
MEDIA_REMOVED
MEDIA_UNMOUNTED
나는 여기 만이 1 개 관련 질문을 발견하지만,이 솔루션은 이미 시도 dataScheme "파일"을 추가했다. 당신은 그런 이름으로 BroadcastSDCard
의 .class를 새로운 클래스를 생성이
<application>
<receiver android:name=".BroadcastSDCard">
<intent-filter>
<action android:name="android.intent.action.MEDIA_UNMOUNTED" />
<action android:name="android.intent.action.MEDIA_REMOVED" />
<action android:name="android.intent.action.MEDIA_EJECT" />
<action android:name="android.intent.action.MEDIA_BAD_REMOVAL" />
<data android:scheme="file" />
</intent-filter>
</receiver>
</application>
같은 매니페스트에서 BroadcastReceiver
을 등록하고 그 중 하나를 사용해야합니다
private BroadcastReceiver deviceCardsBroadcastReceiver;
private IntentFilter sdCardIntentFilter;
sdCardIntentFilter = new IntentFilter();
sdCardIntentFilter.addAction(MEDIA_REMOVED);
sdCardIntentFilter.addAction(MEDIA_UNMOUNTED);
sdCardIntentFilter.addAction(MEDIA_BAD_REMOVAL);
sdCardIntentFilter.addAction(MEDIA_EJECT);
sdCardIntentFilter.addDataScheme("file");
registerReceiver(deviceCardsBroadcastReceiver, sdCardIntentFilter);
deviceCardsBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
switch (intent.getAction()) {
case MEDIA_BAD_REMOVAL:
case MEDIA_EJECT:
case MEDIA_REMOVED:
case MEDIA_UNMOUNTED:
Log.i("SD CARD REMOVED");
break;
default:
break;
}
}
};
매니페스트는 어떻게 보이나요? –
나는 모든 것을 programmaticaly하고 있었기 때문에 manifest에 아무 것도 추가하지 않았고, 이전 4.0 태블릿에서 작동하는 것으로 보인다. 나는 거기에서도 뭔가해야합니까? –
네, 매니 페스트에 'BroadcastReceiver'를 등록해야합니다. 나는 1 초를 대답 할 것이다. –