android 权限动态管理,Android kotlin的动态权限管理,开源库permissionsdispatcher的

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.前面第一二步就完成了基本配置,接下来就是使用

1e26c4f936c83a40627fd5d53a71dd74.png

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的相关教程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值