-
Notifications
You must be signed in to change notification settings - Fork 25
Description
requestPermissionLauncher.launch(Manifest.permission.XXX,
onGranted = { },
onDenied = { settingsLauncher -> // 拒绝且不再询问,可引导用户到设置里授权该权限},
onExplainRequest = { // (可选)拒绝了一次,可弹框解释为什么要获取该权限 }
)
在我的手机红米K40 pro上,在默认授权原权限为询问的情况下:
第一次点击拒绝的时候,回调了onExplainRequest方法
第二次点击拒绝的时候(拒绝且不再询问),回调了onDenied方法
第三次以后再请求授权就只会调用onDenied方法
但实际上我想要的回调是:
1、在从未请求授权的情况下,第一次用户拒绝是回调方法通知我 -> 以便我告知用户授权的必要性提示
2、在已授权且点击了“拒绝且不再询问”时候回调方法通知我 -> 以便我弹提示或者直接跳转到权限设置页面让用户去打开权限
注:第一次点击“拒绝且不再询问”的时候不要回调
private fun photoTake() {
var grantDenied = permissionDenied(Permission.CAMERA)
cameraPermissionLauncher.launch(Manifest.permission.CAMERA,
onGranted = {
photoTaker.launch { cropImage(it) }
},
onDenied = {
if (grantDenied) it.launch()
grantDenied = true
},
onExplainRequest = {
grantDenied = false
}
)
}
以上是我目前的做法,不过,感觉这样写代码不太好看,如果你在相应方法里面增加回调方法或者相应属性字段的话,代码或许会写得更好看一些。