Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

新增标记提议 #10

Open
chende008 opened this issue Mar 9, 2023 · 0 comments
Open

新增标记提议 #10

chende008 opened this issue Mar 9, 2023 · 0 comments

Comments

@chende008
Copy link

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
}
)
}

以上是我目前的做法,不过,感觉这样写代码不太好看,如果你在相应方法里面增加回调方法或者相应属性字段的话,代码或许会写得更好看一些。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant