메신저 : android: how to listen to "sd card removed unexpectedly" 하지만 수신자의 onReceive가 호출되지 않습니다. sdcard가 마운트되어 있지 않거나 sdcard를 제거하지 않았습니다. 다음은 코드입니다.청취자가 sd 카드를 제거하기 위해
public class MyClass1 extends Activity{
BroadcastReceiver mSDCardStateChangeListener = null;
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mSDCardStateChangeListener = MyClass2.registerSDCardStateChangeListener(this);
//some code which needs SDCard and throws unhandled exception if sdcard is not there
}
@Override
protected void onDestroy()
{
MyClass2.unRegisterSDCardStateChangeListener(this, mSDCardStateChangeListener);
super.onDestroy();
}
//in MyClass2
public static BroadcastReceiver registerSDCardStateChangeListener(Activity act) {
BroadcastReceiver mSDCardStateChangeListener = new BroadcastReceiver() {
@Override
public void onReceive(Context arg0, Intent arg1) {
String action = arg1.getAction();
if(action.equalsIgnoreCase(Intent.ACTION_MEDIA_REMOVED)
|| action.equalsIgnoreCase(Intent.ACTION_MEDIA_UNMOUNTED)
|| action.equalsIgnoreCase(Intent.ACTION_MEDIA_BAD_REMOVAL)
|| action.equalsIgnoreCase(Intent.ACTION_MEDIA_EJECT))
{
//i never come here ;(
//do something
}
}
};
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_MEDIA_REMOVED);
filter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
filter.addAction(Intent.ACTION_MEDIA_BAD_REMOVAL);
filter.addAction(Intent.ACTION_MEDIA_EJECT);
filter.addDataScheme("file");
act.registerReceiver(mSDCardStateChangeListener, filter);
return mSDCardStateChangeListener;
}
public static void unRegisterSDCardStateChangeListener(Activity act, BroadcastReceiver mSDCardStateChangeListener)
{
act.unregisterReceiver(mSDCardStateChangeListener);
}
SDCARD이 경우 에 의해 존재인지 아닌지 내가 확인하지 않으 (android.os.Environment.getExternalStorageState(). 등호 (android.os.Environment.MEDIA_MOUNTED)) 대신 수신기를 사용합니다. 어떤 도움이라도 환영합니다. 감사합니다.
매니페스트 파일에 권한을 설정 했습니까? – Lukap
@Lukap 내 매니 페스트에 android.permission.READ_PHONE_STATE이 (가) –
@ con_9 맞습니다. 죄송합니다. – Caner