Android下如何卸载和格式化sdcard
来源:互联网 发布:郝斌c语言180视频教程 编辑:程序博客网 时间:2024/05/29 02:46
想了好多天 没想明白到底怎么弄,昨天 一朋友告诉我用aidl 试了下,还真的成功了!!
下面我们来看看到底怎么实现的吧
因为google并没有给我们暴露卸载sdcard和格式化sdcard的api
那要怎么才能实现呢,android中的设置里可以 卸载和格式化sdcard,那我就来到了settings的源代码里找(Settings源代码要自己下载),
在com.android.settings.deviceinfo中的Memory.java中可以看到OnCreateDialog的方法里面有个doUnmount(boolean force)方法
来到doUnmount()方法中我看到了
IMountService mountService = getMountService();
String extStoragePath = Environment.getExternalStorageDirectory().toString();
mountService.unmountVolume(extStoragePath, force);
getMountService()方法中 有
IBinder service = ServiceManager.getService("mount");
if (service != null) {
mMountService = IMountService.Stub.asInterface(service);
}
哦 知道了 会写了
Method method = Class.forName("android.os.ServiceManager").getMethod("getService", String.class);//利用反射得到ServiceManager类中的getService方法
IBinder binder = (IBinder) method.invoke(null, "mount");
IMountService iMountService = IMountService.Stub.asInterface(binder);
以上代码会出现异常 记得处理哦!!!
差点忘了,还要在Manifest.xml中加权限
<!-- 格式化SD卡 -->
<uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS"/>
在android.os.storage包下加入 以下三个类
还有要加入这IMountService.aidl IMountServiceListener.aidlIMountShutdownObserver.aidl三个文件
下面我们来看看到底怎么实现的吧
因为google并没有给我们暴露卸载sdcard和格式化sdcard的api
那要怎么才能实现呢,android中的设置里可以 卸载和格式化sdcard,那我就来到了settings的源代码里找(Settings源代码要自己下载),
在com.android.settings.deviceinfo中的Memory.java中可以看到OnCreateDialog的方法里面有个doUnmount(boolean force)方法
来到doUnmount()方法中我看到了
IMountService mountService = getMountService();
String extStoragePath = Environment.getExternalStorageDirectory().toString();
mountService.unmountVolume(extStoragePath, force);
getMountService()方法中 有
IBinder service = ServiceManager.getService("mount");
if (service != null) {
mMountService = IMountService.Stub.asInterface(service);
}
哦 知道了 会写了
Method method = Class.forName("android.os.ServiceManager").getMethod("getService", String.class);//利用反射得到ServiceManager类中的getService方法
IBinder binder = (IBinder) method.invoke(null, "mount");
IMountService iMountService = IMountService.Stub.asInterface(binder);
iMountService.unmountVolume(sDStateString, true);//卸载sdcard
SystemClock.sleep(4000);
iMountService.formatVolume(sDStateString);//格式化sdcard 在没有卸载掉sdcard时 好像是不能格式化sdcard的 (没试过!!)以上代码会出现异常 记得处理哦!!!
差点忘了,还要在Manifest.xml中加权限
<!-- 格式化SD卡 -->
<uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS"/>
在android.os.storage包下加入 以下三个类
还有要加入这IMountService.aidl IMountServiceListener.aidlIMountShutdownObserver.aidl三个文件
- Android下如何卸载和格式化sdcard
- Android平台SDCARD格式化
- android 格式化sdcard
- android 监听SDCard安装和卸载的代码
- android 通过编程方式 卸载sdcard
- 关于sdcard卸载和装载的广播
- mtd,sda,sdcard inand ,格式化和分区
- android 监听SDCard安装和卸载的代码片段(测试通过)
- android 监听SDCard安装和卸载的代码片段(测试通过)
- android ormlite简单使用和读取sdcard下db数据库
- MAC下如何卸载Android Studio
- linux下如何安装和卸载软件
- android sdcard下创建文件夹
- android sdcard创建和使用
- Android创建sdcard和使用
- android.uid.system和sdcard
- android drawable 在res下 和在sdcard下得到图片大小 不一样怎么办?(已经解决)
- Android重要的文件目录mnt/sdcard 和 /sdcard
- android桌面添加快捷方式之判断是否存在无效
- Magento付款流程的简化【7】
- delphi+sqlserver 换行
- 苹果千万代言把公众给hold住了
- Android开发之windows系统上NDK的安装与使用
- Android下如何卸载和格式化sdcard
- jquery+autocomplete+json 操作
- 数据库的基本概念
- 数据结构在实际开发过程中的应用
- Linux系统内存分析
- AS3中的Timer和Event.EnterFrame的区别
- jQuery(function(){})与(function(){})(jQuery)的区别
- asp.net取得已登录用户LoginName的值即登录用户UserName值的方法
- 建筑物占据的网格数目的确定(三)