2015-11-18 5 views
13

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

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

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

+1

В настоящее время я спрашиваю себя. Не содержит ли 'ACCESS_FINE_LOCATION'' ACCESS_COARSE_LOCATION' сам? Например, если у вас может быть прекрасное место, возможно, вы сможете получить приблизительное местоположение? – Nikola

+0

Вы используете сетевой провайдер для получения местоположения или только с помощью GPS? – Rajesh

+0

Попробуйте это, возможно, это будет http://stackoverflow.com/a/41221852/5488468 –

ответ

24

Не требуется 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

0

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

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

Смежные вопросы