Android5.1格式化sd卡AOSP
今天下午在做一个格式化的,看了一下系统的API,实现了。分享给大家吧。
权限:
1、声明
<uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS"/>
2、需要系统签名,也就是说放到系统里面编译或者用系统签名来签名。
代码如下:
public void formatSdcard() {
Observable.create(new ObservableOnSubscribe<Object>() {
@Override
public void subscribe(ObservableEmitter<Object> observableEmitter) {
StorageManager localObject = StorageManager.from(BaseApplication.getAppContext());
Intent paramView = new Intent("com.android.internal.os.storage.FORMAT_ONLY");
paramView.setComponent(ExternalStorageFormatter.COMPONENT_NAME);
StorageVolume[] storageVolumes = localObject.getVolumeList();
int i = 0;
while (i < storageVolumes.length) {
if (storageVolumes[i].getPath().equals("/storage/sdcard1")) {
paramView.putExtra("storage_volume", storageVolumes[i]);
BaseApplication.getAppContext().startService(paramView);
}
i += 1;
}
}
}).subscribeOn(Schedulers.io()).subscribe();
}
相关的API,直接上代码肯定是跑不了的,看下图吧:
我们看一下爆红的地方:
第一个StorageManager.from(Context context)
第二个:
localObject.getVolumeList()
启动服务,格式化
while (i < storageVolumes.length) {
if (storageVolumes[i].getPath().equals("/storage/sdcard1")) {
paramView.putExtra("storage_volume", storageVolumes[i]);
BaseApplication.getAppContext().startService(paramView);
}
i += 1;
}