ACCESS_FINE_LOCATION 对话框未显示 android 12

ACCESS_FINE_LOCATION dialog not showing android 12

我在应用程序中请求 FINE_LOCATION 时遇到了一些问题。 我试着阅读了一些关于 ACCESS_FINE_LOCATION 的内容,我知道我应该将它与 ACCESS_COARSE_LOCATION 一起用于 android 12,但它似乎每次都只向我显示“大概位置”我问。它甚至不要求 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" />

代码:


//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) }
            }

我尝试在 android 31 模拟器上 运行 和 android 12 上的 phone。结果相同。从来没有得到好的位置,只是粗略的位置。它似乎适用于所有其他 android 版本,它只是 android 12 个好的位置东西阻止了我。

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

感谢 lasagnakid77,我终于让它工作了,谢谢!

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

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" tools:remove="android:maxSdkVersion" />

这里有一个很好的解释: