im đang cố gắng thực hiện điều gì đó tương tự như sau: android: how to listen to "sd card removed unexpectedly" nhưng onReceive của người nghe không bao giờ được gọi, khi tôi không có sdcard gắn hoặc tôi loại bỏ sdcard. Đây là mã.người nghe để xóa thẻ 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);
}
tôi không muốn kiểm tra xem sdcard hiện diện hay không bằng cách if (android.os.Environment.getExternalStorageState(). Equals (android.os.Environment.MEDIA_MOUNTED)) nhưng sử dụng máy thu để thay thế. Bất kỳ trợ giúp là welcome.Thanks !.
bạn có đặt quyền của mình trong tệp kê khai không? – Lukap
@Lukap i có android.permission.READ_PHONE_STATE trong tệp kê khai của tôi –
@ con_9 Bạn nói đúng, xin lỗi. – Caner