Android6.0动态权限问题,使用PermissionDispatcher自动分配
Android 6.0 权限问题
Android 6.0对权限做了区分,将手机的权限分为危险权限和非危险权限;
非危险权限只要在AndroidManifest中加入权限申请就可以使用了。
而危险权限只在AndroidManifest中加入权限申请是不行的,在运行的时候会报错。存储卡的读写操作就被定义为危险权限。
原生的方式,不太好,不用
public void requestAllPower2() {
//判断是否已经赋予权限
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
//申请
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
}
}
推荐使用,PermissionsDispatcher,导入比较特殊
1.首先下载Android Studio的插件。
https://plugins.jetbrains.com/plugin/8349-permissionsdispatcher-plugin
2.下载好后,在Android studio 中File—Settings—Plugins—(右下角)Install plugin from disk—选择刚才下载好的压缩包
3.安装好后,重启AS,在代码的界面上,右键—Generate—Add PermissionsDispatcher dependencies—Generate Runtime Permission
4.在Manifest.xml中加入(我这里选择了相机,读写存储卡)
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
5.在onCrete中加入这行代码
MainActivityPermissionsDispatcher.permissionsWithPermissionCheck(this);
参考资料
PermissionDispatcher,RxPermission,EasyPermission对比:
https://blog.****.net/qq_38414907/article/details/76535559