在android2.2的时代,貌似有两种办法可以监控SD的状态。
1. 注册BroadcastRecerver,监听广播(Intent.ACTION_MEDIA_MOUNTED,Intent.ACTION_MEDIA_EJECT,Intent.ACTION_MEDIA_REMOVED等)
2. 在StorageManager上挂StorageEventListener监听。
但是怎么从3.0开始,这两种方法都没法用了呢?那现在我应该如何来监控SD卡的状态?总不能跑个死循环,一直调用Environment.getExternalStorageState ()吧?
1. 注册BroadcastRecerver,监听广播(Intent.ACTION_MEDIA_MOUNTED,Intent.ACTION_MEDIA_EJECT,Intent.ACTION_MEDIA_REMOVED等)
2. 在StorageManager上挂StorageEventListener监听。
但是怎么从3.0开始,这两种方法都没法用了呢?那现在我应该如何来监控SD卡的状态?总不能跑个死循环,一直调用Environment.getExternalStorageState ()吧?
mExternalStorageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("test", "Storage: " + intent.getData());
updateExternalStorageState();
}
};
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_MEDIA_MOUNTED);
filter.addAction(Intent.ACTION_MEDIA_REMOVED);
registerReceiver(mExternalStorageReceiver, filter);
updateExternalStorageState();
}
http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/content/ExternalStorage.html