Android kotlin的动态权限管理,开源库permissionsdispatcher的
Android kotlin的动态权限管理,开源库permissionsdispatcher的简单使用
Android 对6.0及以上的版本做了更强的权限控制,如打电话,拍照读取文件等都需要动态的申请权限,这个开源库挺好用的,记录一下使用permissionsdispatcher,是基于注解开发的
GitHub地址
使用步骤:Kotlin使用
1.在build.gradle中添加如下代码
kapt "org.permissionsdispatcher:permissionsdispatcher-processor:4.2.0"
2.AndroidManifest.xml中添加相关权限
//拨打电话权限
//文件读写权限
等其他权限
3.前面第一二步就完成了基本配置,接下来就是使用
4.具体使用
a.首先在你要在AndroidManifest.xml文件中添加你要获取的权限
b.在你需要使用权限的Activity或者Fragment中添加注解@RuntimePermission
如下:
@RuntimePermissions
open class MineFragment: BaseImmersionBarFragment()
c.在你需要使用权限的方法中加入注解@NeedsPermission
@NeedsPermission(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE)
open fun show(){}
我这边是更换头像,所以需要照相和文件读取权限,可根据需要进行添加或修改
d.在添加如下代码获取请求权限的结果
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
onRequestPermissionsResult(requestCode, grantResults)
}
e.在用户拒绝且不在询问时需要执行的方法下添加如下代码,我这边时是直接跳转到设置界面用户手动获取权限
@OnNeverAskAgain(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE)
open fun showAgain(){
context?.let { it1 ->
CommonDialog.Builder(it1)
.setMessage("为了您方便使用,请前往设置获取权限")
.setNegativeButton(R.string.not, DialogInterface.OnClickListener { p0, _ ->
p0.dismiss()
})
.setMessageColor(Color.BLACK)
.setPositiveButton(R.string.yes, DialogInterface.OnClickListener { dialog, _ ->
dialog.dismiss()
jumpSetting()
})
.setWith(0.8f)
.create()
.show()
}
}
private fun jumpSetting() {
val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
val uri: Uri = Uri.fromParts("package", context?.packageName, null)
intent.data = uri
try {
startActivity(intent)
startActivityForResult(intent, REQUEST_CODE_OPEN_SETTING)
} catch (e: Exception) {
e.printStackTrace()
}
}
f.在使用时把原先调用@NeedsPermission此注解的方法改为“方法名”+WithPermissionCheck
如我们注解的是show()方法,现在就要使用showWithPermissionCheck()这个方法,这个方法要先编译才会出现辅助类,
才会由此方法,辅助类名为“此Activity名字或者Fragment名字”+“PermissionDispatcher”,在build/genrated/source/kapt
debug/com目录下
次开源库使用起来比较简单,但是有些注意事项要注意,
1.
注解@RuntimePermissions和注解@NeedsPermission(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE)
要对应,当有注解@RuntimePermissions是必须要有@NeedsPermission否则会运行不通过,我就是在写的时候搞混了,一个类写了注解@RuntimePermissions
在另一个类中写@NeedsPermission就会报错。
2.注解@NeedsPermission所注解的方法不能为私有的
这就是Android权限管理开源库permissionsdispatcher的的简单使用
Android kotlin的动态权限管理,开源库permissionsdispatcher的相关教程