Якщо у мене вже є ACCESS_FINE_LOCATION, я можу пропустити ACCESS_COARSE_LOCATION?


89

У мене є програма GPS, яка вже вимагає ACCESS_FINE_LOCATIONдозволу в маніфесті, тепер я хочу додати бібліотеку (MoPub), яка вимагає ACCESS_COARSE_LOCATION.

Чи правильно я вважаю, що цього ACCESS_FINE_LOCATIONдостатньо, і я можу не брати участь ACCESS_COARSE_LOCATIONу своєму маніфесті?

Відповіді:


153

https://developer.android.com/guide/topics/location/strategies.html#Permission

Примітка. Якщо ви використовуєте як NETWORK_PROVIDER, так і GPS_PROVIDER, вам потрібно запитати лише дозвіл ACCESS_FINE_LOCATION, оскільки він включає дозвіл для обох постачальників. (Дозвіл на ACCESS_COARSE_LOCATION включає дозвіл лише на NETWORK_PROVIDER.)

Коротше: так, вам не потрібно, ACCESS_COARSE_LOCATIONякщо ви вже визначили ACCESS_FINE_LOCATION.


13
+1, але як не дивно, документ Google Maps рекомендує використовувати обидва: developers.google.com/maps/documentation/android/…
alex

3
Можливо, для телефонів, які мають мережеві можливості, але не мають GPS?
Ніклас А.

2
@NicklasA. логічно, це не повинно впливати на те, що "штраф" включає "грубий" - зниклий постачальник просто буде відсутній. Крім того, якби це було потрібно для цього випадку, я би очікував, що так скажуть документи Google.
ToolmakerSteve

9
Оновлення коментаря @ alex: Google Maps тепер прямо говорить, що вам потрібно попросити лише одного дозволу. developers.google.com/maps/documentation/android-api/location
Klox

15

Залежить від ваших потреб.

Дозвіл мудрий, ACCESS_FINE_LOCATIONвключає ACCESS_COARSE_LOCATION. Однак є підвох:

ACCESS_COARSE_LOCATIONнадає вам останнє відоме місцезнаходження, яке зручно для батареї https://developer.android.com/training/location/retrieve-current.html#setup
Наприклад, якщо ваш додаток робить щось на зразок рекомендацій на основі місцезнаходження, останнім відомим місцезнаходженням є досить добре.
Це залежить від служб Google Play

Однак, якщо вам потрібне щось на зразок локації в режимі реального часу / реального часу, наприклад Pokemon Go, скористайтеся ACCESS_FINE_LOCATION
програмою "Це дає вам місцезнаходження в реальному часі" Вам потрібно буде скористатися LocationListener
останнім часом, коли я перевірив, для цього не потрібні служби Google Play


Чи буде цей дозвіл корисним для сканування Bluetooth LE?
Ігор Ганапольський

@ericn, можливо, ти можеш допомогти мені у вирішенні проблем з розташуванням? stackoverflow.com/questions/63917764/… У мене дуже дивна поведінка під час прослуховування речень NMEA.
Віктор Апоян
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.