ACCESS_FINE_LOCATION 对话框不显示 android 12

Mey*_*ben 3 permissions android geolocation android-12

我在应用程序中请求 FINE_LOCATION 时遇到一些问题。我尝试阅读一些有关 ACCESS_FINE_LOCATION 的内容,我知道我应该将其与 Android 12 的 ACCESS_COARSE_LOCATION 一起询问,但每次我询问时,它似乎只向我显示“大致位置”。它甚至不要求 FINE_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.ACCESS_COARSE_LOCATION" />
Run Code Online (Sandbox Code Playgroud)

代码:


//asking for permission inside a method
requestMultiplePermissions.launch(arrayOf(ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION ))


// registering activity for result. 
activity.registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions ->

            if(permissions.entries.all { it.value }){
                checkPermissionsAndContinue()
            }else{
                val deniedPermission = permissions.entries.find { !it.value }
                deniedPermission?.key?.let { showPermissionDeniedDialog(it) }
            }

Run Code Online (Sandbox Code Playgroud)

我尝试在 android 31 模拟器上运行,而我的手机在 android 12 上运行。结果相同。永远不会得到精细位置,只能得到粗略位置。它似乎适用于所有其他 Android 版本,只是 Android 12 的精细位置问题阻止了我。

有人知道我可以去哪里解决这个问题吗?太感谢了!

Mey*_*ben 9

感谢lasagnakid77,我终于成功了,谢谢!

只需将 tools:remove="android:maxSdkVersion" 添加到 LOCATION_PERMISSION 中,如下所示:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" tools:remove="android:maxSdkVersion" />
Run Code Online (Sandbox Code Playgroud)

这里有一个很好的解释:Android 12 not shown Correct requests request screen