使用步骤
注意:不要使用2.0.3 版本,可能下载不下来依赖
1、导入依赖
implementation 'com.yanzhenjie:permission:2.0.2'
2、实例代码
val permissions = arrayOf(
Permission.CAMERA,
Permission.READ_EXTERNAL_STORAGE,
Permission.READ_PHONE_STATE
)
AndPermission.with(this)
.runtime()
.permission(permissions)
.onGranted {
Log.e(TAG, "onGranted执行")
Log.e(TAG, "相机初始化操作")
Log.e(TAG, "存储状态初始化操作")
Log.e(TAG, "读取通话状态初始化操作")
}
.onDenied {
// 通过下面的方式来控制
if (AndPermission.hasPermissions(mContext, Permission.READ_PHONE_STATE)) {
Log.e(TAG, "可以读取通话状态")
Log.e(TAG, "读取通话状态初始化操作")
} else {
Log.e(TAG, "不可以读取通话状态")
// 总是拒绝
if (AndPermission.hasAlwaysDeniedPermission(
mContext,
Permission.READ_PHONE_STATE
)
) {
Log.e(TAG, "总是拒绝读取通话状态")
}
}
if (AndPermission.hasPermissions(mContext, Permission.READ_EXTERNAL_STORAGE)) {
Log.e(TAG, "可以获取存储状态")
Log.e(TAG, "存储状态初始化操作")
} else {
Log.e(TAG, "不可以获取存储状态")
if (AndPermission.hasAlwaysDeniedPermission(
mContext,
Permission.READ_EXTERNAL_STORAGE
)
) {
Log.e(TAG, "总是拒绝存储权限")
}
}
if (AndPermission.hasPermissions(mContext, Permission.CAMERA)) {
Log.e(TAG, "可以获取相机状态")
Log.e(TAG, "相机初始化操作")
} else {
Log.e(TAG, "不可以获取相机状态")
if (AndPermission.hasAlwaysDeniedPermission(mContext, Permission.CAMERA)) {
// 打开权限设置页
Log.e(TAG, "总是拒绝相机权限")
}
}
}
.start()
使用问题
1、如果有3个权限,比如 Permission.CAMERA,Permission.READ_EXTERNAL_STORAGE 一个同意,一个不同意,那么它是不走onGranted方法,这样逻辑处理就比较麻烦,没有办法精细处理,为了防止权限通过以后的多次初始化的操作,必须借助本地的变量进行设置。
2、如果使用下面的方式进行多个权限的申请,会出现问题,一个权限会被覆盖。
AndPermission.with(this)
.runtime()
.permission(Permission.Group.STORAGE)
.onGranted {
}.onDenied {
}.start()
AndPermission.with(this)
.runtime()
.permission(Permission.Group.CAMERA)
.onGranted {
}.onDenied {
}.start()
}