ACCESS_COARSE_LOCATION android 权限问题

Posted

技术标签:

【中文标题】ACCESS_COARSE_LOCATION android 权限问题【英文标题】:Problem with ACCESS_COARSE_LOCATION android permission 【发布时间】:2021-11-16 05:30:59 【问题描述】:

您好,我在 android 应用程序中遇到了 ACCESS_COARSE_LOCATION 权限问题。我已将权限添加到清单中:

    <!-- Required for Nearby Connections API -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

并在我的 onStart() 方法中请求了权限:

    override fun onStart() 
    super.onStart()
    requestPermissions(arrayOf(
        Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION),
        REQUEST_CODE_PERMISSIONS)

并检查是否被授予:

        if (ContextCompat.checkSelfPermission(
            this,
            Manifest.permission.ACCESS_COARSE_LOCATION
        ) == PackageManager.PERMISSION_GRANTED
    ) 

        mConnectionsClient.startDiscovery(
            SERVICE_ID,
            mEndpointDiscoveryCallback,
            DiscoveryOptions.Builder().setStrategy(Strategy.P2P_STAR).build()
        )
            .addOnSuccessListener 
                debug("Success startDiscovery: $it")
            
            .addOnFailureListener 
                debug("Failure startDiscovery: $it")
            
    

当我检查是否授予权限时,它说是但仍然显示错误:

Failure startDiscovery: com.google.android.gms.common.api.ApiException: 8034: MISSING_PERMISSION_ACCESS_COARSE_LOCATION

有人知道问题可能是什么吗?

【问题讨论】:

【参考方案1】:

确保您的测试设备没有在设置中全局关闭“位置”。

即使您请求并随后检查以肯定地确保您已被授予所有正确的权限以开始实际调用的发现

Nearby.getConnectionsClient(...).startDiscovery(...)

还是会回来

com.google.android.gms.common.api.ApiException: 8034: MISSING_PERMISSION_ACCESS_COARSE_LOCATION

【讨论】:

以上是关于ACCESS_COARSE_LOCATION android 权限问题的主要内容,如果未能解决你的问题,请参考以下文章

ACCESS_COARSE_LOCATION android 权限问题

ACCESS_COARSE_LOCATION 在 Android 6 上不起作用 [重复]

Android 应用可以在没有 ACCESS_COARSE_LOCATION 权限的情况下使用蓝牙

sdk 22 和 25 之间的 ACCESS_FINE_LOCATION 和 ACCESS_COARSE_LOCATION 权限有啥区别吗?

java.lang.SecurityException:需要 ACCESS_FINE_LOCATION 或 ACCESS_COARSE_LOCATION 权限

错误:客户端必须具有 ACCESS_COARSE_LOCATION 或 ACCESS_FINE_LOCATION [重复]