ACCESS_FINE_LOCATION对话框在Android 12上没有显示

3

我在我的应用程序中请求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" />

代码:


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

我尝试在安卓31模拟器和我的安卓12手机上运行,但结果一样。始终无法获取精确位置,只有粗略位置。对于其他所有安卓版本都能正常工作,唯独在安卓12上出现了问题。

是否有人有想法,可以给我指点一下如何修复这个问题呢?非常感谢!


不,你不应该一起问,而是一个接一个地问。 - blackapps
1
不,我认为他们对于Android 12是正确的,你应该请求两个权限。检查是否发生了类似这样的情况:https://dev59.com/KW8NtIcB2Jgan1znfiG- - lasagnakid77
哇!谢谢你这么快回答我的问题!你让我很开心!我只需要在清单文件中的 FINE_LOCATION 权限中添加 tools:remove="android:maxSdkVersion" 即可。非常感谢! - Meyben
1个回答

9

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

只需像这样将tools:remove="android:maxSdkVersion"添加到LOCATION_PERMISSION中:

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

这里有一个很好的解释:Android 12未显示正确的权限请求屏幕


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接