shouldShowRequestPermissionRationale 方法第一次返回 false

问题描述 投票:0回答:2

shouldShowRequestPermissionRationale方法第一次返回

false

我在片段中有以下代码:

if (shouldShowRequestPermissionRationale(READ_CONTACTS)) {
    requestPermissions(new String[]{READ_CONTACTS}, 0);
} else {
    Toast.makeText(getActivity(), "FALSE", Toast.LENGTH_SHORT).show();
    snackBarInfo.dismiss();
}

还有其他人遇到过这种情况吗?

android permissions
2个回答
5
投票

是的,这是设计使然。这个想法是,如果未授予权限并且shouldShowRequestPermissionRationale方法返回

false
,那么应用程序应该向操作系统请求权限。

当用户拒绝权限请求时,shouldShowRequestPermissionRationale方法将返回

true
。此时,您应该向用户显示一些自定义 UI,解释为什么需要权限。

请参阅请求应用权限页面中的请求权限的工作流程部分,了解更多详细信息。


0
投票

我觉得作为评论发布非常重要,所以我将其作为答案。

是的,该方法第一次返回 false,一次拒绝权限后返回 true。请记住,多次拒绝权限(通常为 2 次)后,Android 将自动拒绝该特定权限请求,而不向用户显示任何对话框。

但这种逻辑是完全错误的。想一想:

最好在第一次请求许可之前向用户解释为什么需要许可。通过这种方式,您可以在用户内部建立信任和透明度,并获得较低的“权限拒绝率”,从而“损害”您的 Google Play 商店 Vitals 指标,从而“损害 Play 商店中的可见性”。

© www.soinside.com 2019 - 2024. All rights reserved.