Проблема с разрешением ACCESS_COARSE_LOCATION для Android

#android #kotlin #permissions #android-permissions

Вопрос:

Привет, у меня проблема с разрешением ACCESS_COARSE_LOCATION в приложении для Android. Я добавил разрешение в манифест:

     <!-- 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