android 通过编程方式 卸载sdcard

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 源码中编译,否则会报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值