shouldShowRequestPermissionRationale方法第一次返回
false
。
我在片段中有以下代码:
if (shouldShowRequestPermissionRationale(READ_CONTACTS)) {
requestPermissions(new String[]{READ_CONTACTS}, 0);
} else {
Toast.makeText(getActivity(), "FALSE", Toast.LENGTH_SHORT).show();
snackBarInfo.dismiss();
}
还有其他人遇到过这种情况吗?
是的,这是设计使然。这个想法是,如果未授予权限并且shouldShowRequestPermissionRationale方法返回
false
,那么应用程序应该向操作系统请求权限。
当用户拒绝权限请求时,shouldShowRequestPermissionRationale方法将返回
true
。此时,您应该向用户显示一些自定义 UI,解释为什么需要权限。
我觉得作为评论发布非常重要,所以我将其作为答案。
是的,该方法第一次返回 false,一次拒绝权限后返回 true。请记住,多次拒绝权限(通常为 2 次)后,Android 将自动拒绝该特定权限请求,而不向用户显示任何对话框。
但这种逻辑是完全错误的。想一想:
最好在第一次请求许可之前向用户解释为什么需要许可。通过这种方式,您可以在用户内部建立信任和透明度,并获得较低的“权限拒绝率”,从而“损害”您的 Google Play 商店 Vitals 指标,从而“损害 Play 商店中的可见性”。