Jika saya sudah memiliki ACCESS_FINE_LOCATION, dapatkah saya menghilangkan ACCESS_COARSE_LOCATION?

89

Saya memiliki aplikasi GPS yang sudah meminta ACCESS_FINE_LOCATIONizin di manifes, sekarang saya ingin menambahkan perpustakaan (MoPub) yang membutuhkan ACCESS_COARSE_LOCATION.

Apakah saya benar dalam mengasumsikan bahwa itu ACCESS_FINE_LOCATIONsudah cukup, dan saya dapat meninggalkan ACCESS_COARSE_LOCATIONmanifestasi saya?

keberuntungan
sumber

Jawaban:

155

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

Catatan: Jika Anda menggunakan NETWORK_PROVIDER dan GPS_PROVIDER, Anda hanya perlu meminta izin ACCESS_FINE_LOCATION, karena izin tersebut mencakup izin untuk kedua penyedia. (Izin untuk ACCESS_COARSE_LOCATION mencakup izin hanya untuk NETWORK_PROVIDER.)

Singkatnya: ya, Anda tidak perlu ACCESS_COARSE_LOCATIONjika Anda sudah menentukan ACCESS_FINE_LOCATION.

Connor Tumbleson
sumber
13
+1 tapi anehnya, dokumen Google Maps merekomendasikan untuk menggunakan keduanya: developers.google.com/maps/documentation/android/…
alex
3
Mungkin untuk ponsel yang memiliki kemampuan jaringan tetapi tanpa GPS?
Nicklas A.
2
@Nicklas. logisnya, hal itu seharusnya tidak memengaruhi fakta bahwa "baik" mencakup "kasar" - penyedia yang tidak ada akan hilang begitu saja. Juga, jika diperlukan untuk kasus itu, maka saya berharap dokumen Google akan mengatakannya.
ToolmakerSteve
10
Pembaruan pada komentar @ alex: Google Maps sekarang secara eksplisit mengatakan Anda hanya perlu meminta satu izin. developers.google.com/maps/documentation/android-api/location
Klox
17

Tergantung kebutuhan Anda.

Izin bijaksana, ACCESS_FINE_LOCATIONtermasuk ACCESS_COARSE_LOCATION. Namun, ada batasannya:

ACCESS_COARSE_LOCATIONmemberi Anda lokasi terakhir yang diketahui yang ramah baterai https://developer.android.com/training/location/retrieve-current.html#setup
Misalnya, jika aplikasi Anda melakukan sesuatu seperti rekomendasi berbasis lokasi, lokasi terakhir yang diketahui adalah cukup baik.
Ini memiliki ketergantungan pada Layanan Google Play

Namun, jika Anda membutuhkan sesuatu seperti lokasi langsung / waktu nyata seperti Pokemon Go, gunakan ACCESS_FINE_LOCATION
Ini memberi Anda lokasi langsung / waktu nyata. Anda harus menggunakan LocationListener
Terakhir kali saya memeriksa, ini tidak memerlukan Layanan Google Play

ericn
sumber
Apakah izin ini berguna untuk pemindaian Bluetooth LE?
IgorGanapolsky
@ericn mungkin Anda dapat membantu saya dengan masalah lokasi? stackoverflow.com/questions/63917764/… Saya memiliki perilaku yang sangat aneh saat mendengarkan kalimat NMEA.
Viktor Apoyan