Подтвердить что ты не робот

Разрешенное разрешение Marshmallow FINE и COARSE

Я пытаюсь получить доступ к ACCESS_FINE_LOCATION и если не удается найти доступ ACCESS_COARSE_LOCATION. Поэтому я запрашиваю эти 2 разрешения, но они дают мне тот же диалог, запрашивающий разрешение на размещение. Я знаю, что они оба находятся в одной группе, но Google говорит:

Примечание. Ваше приложение по-прежнему должно явно запрашивать все необходимые ему разрешения, даже если пользователь уже предоставил другое разрешение в той же группе. Кроме того, группировка разрешений на группы может измениться в будущих выпусках Android. Ваш код не должен полагаться на предположение, что определенные разрешения являются или не находятся в одной группе.

Это означает, что я запрашиваю эти 2 разрешения в течение секунды, что приводит к 2-мя диалогам в строке. Это не очень удобно для меня. Есть ли лучший способ?

4b9b3361

Ответ 1

Вам не нужно разрешение ACCESS_COARSE_LOCATION при определении разрешения ACCESS_FINE_LOCATION.

Из документации для Android:

Запрос прав пользователя

Чтобы получать обновления местоположений от NETWORK_PROVIDER или GPS_PROVIDER, вы должны запросить разрешение пользователя, объявив либо ACCESS_COARSE_LOCATION или ACCESS_FINE_LOCATION, соответственно, в вашем файле манифеста Android. Например:

<manifest>
      <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
       .......
</manifest>

Без этих разрешений ваше приложение не будет работать во время выполнения, если запрашивая обновления местоположения.

Примечание. Если вы используете как NETWORK_PROVIDER, так и GPS_PROVIDER, тогда вам нужно запросить только разрешение ACCESS_FINE_LOCATION, потому что он включает разрешение для обоих поставщиков. (Разрешение на ACCESS_COARSE_LOCATION включает разрешение только для NETWORK_PROVIDER.)

Посмотрите https://developer.android.com/guide/topics/location/strategies.html

Ответ 2

Я разрешил ту же проблему. Постарайтесь предоставить ему разрешение во время выполнения и сначала проверьте версию SDK манифеста, и если ваша версия больше 6.0 или равна 6.0, вам необходимо проверить разрешения для вашего разрешения и разрешения на передачу. Только точное местоположение в месте запроса, то определенно он будет работать.

Если вы застряли в коде, тогда вы можете запросить код, который я вам обновлю, но сначала выполните эти шаги. если у вас есть успех для выполнения вашей задачи, то оцените его.