直接拔出外置SD卡,很可能收不到Intent.ACTION_MEDIA_UNMOUNTED广播,具体原因未跟
但是可以使用 StorageEventListener 对象来处理,具体做法:
1. 获取STORAGE_SERVICE服务
mStorageManager = (StorageManager) this.getSystemService(Context.STORAGE_SERVICE);
2. new 一个 StorageEventListener对象,并重写 onStorageStateChanged
StorageEventListener mStorageEventListener = new StorageEventListener() {
@Override
public void onStorageStateChanged(String path, String oldState, String newState) {
if (newState.equals(Environment.MEDIA_BAD_REMOVAL)) {
// SD卡强制拔出
...
}
}
3. 注册 mStorageEventListener对象
if (mStorageManager != null) {
mStorageManager.registerListener(mStorageListener);
}
4. 注销mStorageEventListener对象
if (mStorageManager != null && mStorageListener != null) {
mStorageManager.unregisterListener(mStorageListener);
}