1 注册 mount 服务
private synchronized IMountService getMountService(){
IBinder mountBinder = ServiceManager.getService("mount");
IMountService mountService = null;
if (service != null) {
mMountService = IMountService.Stub.asInterface(mountBinder);
} else {
Log.i("mountservice","just can not get the service");
}
return mountService;
}
2 获得sdcard的状态
private String getExternalSdcardState(){
String state = Environment.MEDIA_REMOVED;
try{
StorageManager sm = (StorageManager)getSystemService(Context.STORAGE_SERVICE);
StorageVolume[] volumes = storagemanager.getVolumeList();
String path = volumes[i].getPath();
if( !path.equals("/mnt/external_sdcard") ) {
continue;
}
state = sm.getVolumeState(path);
}catch(Execption e){
}
return state;
}
3 卸载sdcard
private void unmountExternalStorage() {
String state = getExternalSdcardState();
if (state.equals(Environment.MEDIA_MOUNTED)) {
IMountService service = getMountService();
try {
service.unmountVolume("/mnt/external_sdcard", true, false);
} catch (RemoteException e) {
}
}
}
这段代码必须发在android 源码中编译,否则会报错