当前位置:阳光沙滩 >Android > 查看文章

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,直接上代码肯定是跑不了的,看下图吧:

2019-05-20_204332

我们看一下爆红的地方:

第一个StorageManager.from(Context context)

2019-05-20_204454

第二个:

localObject.getVolumeList()

2019-05-20_204606

启动服务,格式化

while (i < storageVolumes.length) {
                    if (storageVolumes[i].getPath().equals("/storage/sdcard1")) {
                        paramView.putExtra("storage_volume", storageVolumes[i]);
                        BaseApplication.getAppContext().startService(paramView);
                    }
                    i += 1;
                }

效果如下:

不上图了,没找到gif那个软件。在我的电脑才有哈。

 

本文链接:https://blog.sunofbeaches.com/archives/2142 转载请注明出处.
如果喜欢:点此订阅本站
为您推荐
各种观点