Android 11 中不显示权限对话框

And*_*ira 19 android kotlin

在我的应用程序中,我需要访问 4 个权限(已在清单中声明)

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
Run Code Online (Sandbox Code Playgroud)

在我的代码中,我检查我是否已经拥有权限,如果没有:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                requestPermissions(
                    arrayOf(
                          Manifest.permission.ACCESS_FINE_LOCATION,
                          Manifest.permission.ACCESS_COARSE_LOCATION,
                          Manifest.permission.ACCESS_BACKGROUND_LOCATION), 1)
            } else {
                ActivityCompat.requestPermissions(this, arrayOf(
                  Manifest.permission.ACCESS_FINE_LOCATION,
                  Manifest.permission.ACCESS_COARSE_LOCATION,
                  Manifest.permission.ACCESS_BACKGROUND_LOCATION), 1)
            }
Run Code Online (Sandbox Code Playgroud)

这段代码可以在我的模拟器中运行,该模拟器有 29 个 API。但在我自己的设备上,不会显示权限弹出窗口。你们知道为什么吗?

Geo*_*cks 30

现在不再允许任何面向 API 30 的 Android 应用在请求常规位置权限的同时请求 BACKGROUND_PERMISSION。你必须将其分成两个单独的问题:

  1. 请求常规前台位置许可,一旦获得许可,
  2. 就新的询问请求BACKGROUND_LOCATION权限


sas*_*mar 12

安卓11

Android 11,如果用户在设备上安装您的应用的生命周期内多次点击拒绝特定权限,则当您的应用再次请求该权限时,用户将看不到系统权限对话框

系统仅重置运行时权限,即在请求时向用户显示运行时提示的权限。

更多详细信息请参阅此权限


小智 9

从 Android 11 开始,如果用户在设备上安装您的应用的生命周期内多次点击“拒绝特定权限”,则当您的应用再次请求该权限时,用户将不会看到系统权限对话框。用户的操作意味着“不要再问”。在以前的版本中,每次您的应用程序请求权限时,用户都会看到系统权限对话框,除非用户之前选择了“不再询问”复选框或选项。Android 11 中的这一行为更改可以阻止重复请求用户选择拒绝的权限。

参考这里