在 Android Studio 上请求权限

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

我正在尝试获取多个权限,但如果它们被拒绝一次,它就不会再询问。 如果没有所有权限,应用程序将根本无法运行,并且如果不接受所有权限,您就无法继续。

我的清单中有以下三行:

    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.READ_CALL_LOG"/>

这就是我尝试获取这些权限的方式:

 private void getPermissions() {
            if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_CALL_LOG) != PackageManager.PERMISSION_GRANTED) {
                requestPermissions(new String[]{Manifest.permission.READ_CONTACTS, Manifest.permission.CALL_PHONE, Manifest.permission.READ_CALL_LOG}, 123);
            }
        }

目前,此过程有效,但只能一次。在拒绝或接受权限并随后删除权限后,应用程序再也不会提示用户。但是,我希望它在每次没有所需权限时请求权限,并且它需要在多个版本的 Android 设备上运行。

java android permissions android-permissions user-permissions
1个回答
0
投票

首先,我建议阅读官方文档

话虽这么说。这是我的理解,当请求权限时,我们有一个 ActivityResultContract。 通过这个我们有3个案例:

  1. 用户在第一次请求时授予权限。 太棒了

  2. 用户拒绝了权限请求。现在您可以再次询问 - 但首先,建议添加

    shouldShowPermissionRationale

  3. 用户第二次请求也被拒绝。现在建议显示一个错误对话框,向用户解释如果没有授予的权限,应用程序将无法执行其工作。如果用户决定同意,您可以链接更改权限的设置。否则,你无能为力。

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