Android kotlin的动态权限管理,开源库permissionsdispatcher的简单使用

Android 对6.0及以上的版本做了更强的权限控制,如打电话,拍照读取文件等都需要动态的申请权限,这个开源库挺好用的,记录一下使用permissionsdispatcher,是基于注解开发的
GitHub地址
使用步骤:Kotlin使用
1.在build.gradle中添加如下代码

kapt "org.permissionsdispatcher:permissionsdispatcher-processor:4.2.0"

2.AndroidManifest.xml中添加相关权限
//拨打电话权限


//文件读写权限


等其他权限
3.前面第一二步就完成了基本配置,接下来就是使用
Android kotlin的动态权限管理,开源库permissionsdispatcher的简单使用_第1张图片

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)