Untuk melindungi privasi pengguna, aplikasi yang menggunakan layanan lokasi harus meminta izin akses lokasi.
Beberapa izin terkait dengan lokasi. Izin mana yang Anda minta, dan cara memintanya, bergantung pada persyaratan lokasi untuk kasus penggunaan aplikasi Anda.
Halaman ini menjelaskan berbagai jenis persyaratan lokasi dan menjelaskan cara meminta izin akses lokasi dalam setiap kasus.
Untuk meminta izin akses lokasi, ikuti praktik terbaik untuk semua izin runtime.
Jenis akses lokasi
Setiap izin memiliki kombinasi karakteristik berikut:
- Kategori: Lokasi latar depan atau lokasi latar belakang.
- Akurasi: Lokasi akurat atau perkiraan lokasi.
Lokasi latar depan
Jika aplikasi Anda berisi fitur yang membagikan atau menerima informasi lokasi satu kali saja atau selama jangka waktu yang ditentukan, maka fitur tersebut memerlukan akses lokasi latar depan. Berikut beberapa contohnya:
- Pada aplikasi navigasi, suatu fitur memungkinkan pengguna mendapatkan petunjuk arah belokan demi belokan.
- Dalam aplikasi pesan, suatu fitur memungkinkan pengguna berbagi lokasinya saat ini dengan pengguna lain.
Sistem menganggap aplikasi Anda menggunakan lokasi latar depan jika fitur aplikasi Anda mengakses lokasi perangkat saat ini dalam salah satu situasi berikut:
- Aktivitas berasal dari aplikasi Anda terlihat.
Aplikasi Anda menjalankan layanan latar depan. Saat layanan latar depan berjalan, sistem akan membuat pengguna menyadarinya dengan menampilkan notifikasi persisten. Aplikasi Anda terus memiliki akses jika ditempatkan di latar belakang, seperti saat pengguna menekan tombol Beranda di perangkat atau menonaktifkan layar perangkatnya.
Selain itu, Anda harus mendeklarasikan jenis layanan latar depan
location
, seperti yang ditunjukkan dalam cuplikan kode berikut. Di Android 10 (API level 29) dan yang lebih baru, Anda harus mendeklarasikan jenis layanan latar depan ini.<!-- Recommended for Android 9 (API level 28) and lower. --> <!-- Required for Android 10 (API level 29) and higher. --> <service android:name="MyNavigationService" android:foregroundServiceType="location" ... > <!-- Any inner elements would go here. --> </service>
Anda mendeklarasikan kebutuhan untuk lokasi latar depan saat aplikasi meminta izin
ACCESS_COARSE_LOCATION
atau izin
ACCESS_FINE_LOCATION
, seperti yang ditunjukkan dalam cuplikan berikut:
<manifest ... >
<!-- Always include this permission -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- Include only if your app benefits from precise location access. -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>
Lokasi latar belakang
Aplikasi memerlukan akses lokasi latar belakang jika suatu fitur dalam aplikasi terus-menerus berbagi lokasi dengan pengguna lain atau menggunakan Geofencing API. Beberapa contohnya meliputi:
- Dalam aplikasi berbagi lokasi keluarga, suatu fitur memungkinkan pengguna untuk terus berbagi lokasi dengan anggota keluarga.
- Dalam aplikasi IoT, suatu fitur memungkinkan pengguna untuk mengonfigurasi perangkat smart home mereka, sehingga perangkat akan nonaktif ketika pengguna meninggalkan rumah dan aktif kembali saat pengguna kembali ke rumah.
Sistem menganggap aplikasi Anda menggunakan lokasi latar belakang jika mengakses lokasi perangkat saat ini dalam situasi apa pun selain yang dijelaskan di bagian lokasi latar depan. Presisi lokasi latar belakang sama dengan presisi lokasi latar depan, yang bergantung pada izin akses lokasi yang dideklarasikan aplikasi Anda.
Di Android 10 (API level 29) dan yang lebih tinggi, Anda harus mendeklarasikan izin
ACCESS_BACKGROUND_LOCATION
dalam manifes aplikasi untuk
meminta akses lokasi latar belakang pada runtime. Pada versi Android
yang lebih lama, jika aplikasi Anda menerima akses lokasi latar depan, aplikasi juga otomatis
menerima akses lokasi latar belakang.
<manifest ... >
<!-- Required only when requesting background location access on
Android 10 (API level 29) and higher. -->
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
</manifest>
Akurasi
Android mendukung level akurasi lokasi berikut:
- Perkiraan
- Memberikan estimasi lokasi perangkat. Jika estimasi lokasi ini
berasal dari
LocationManagerService
atauFusedLocationProvider
, estimasi ini akurat dalam jarak sekitar 3 kilometer persegi (sekitar 1,2 mil persegi). Aplikasi Anda dapat menerima lokasi pada tingkat akurasi ini saat Anda mendeklarasikan izinACCESS_COARSE_LOCATION
, tetapi bukan izinACCESS_FINE_LOCATION
. - Akurat
- Memberikan estimasi lokasi perangkat seakurat mungkin.
Jika estimasi lokasi berasal dari
LocationManagerService
atauFusedLocationProvider
, estimasi ini biasanya berada dalam jarak sekitar 50 meter (160 kaki) dan terkadang sangat akurat hingga beberapa meter (10 kaki) atau lebih akurat lagi. Aplikasi Anda dapat menerima lokasi pada tingkat akurasi ini saat Anda mendeklarasikan izinACCESS_FINE_LOCATION
.
Jika pengguna memberikan izin akses perkiraan lokasi, aplikasi Anda hanya memiliki akses ke perkiraan lokasi, terlepas dari izin akses lokasi yang dideklarasikan aplikasi Anda.
Aplikasi Anda tetap harus berfungsi saat pengguna hanya memberikan akses perkiraan
lokasi. Jika fitur di aplikasi Anda benar-benar memerlukan akses ke lokasi akurat
menggunakan izin ACCESS_FINE_LOCATION
, Anda dapat meminta pengguna untuk mengizinkan
aplikasi Anda untuk mengakses lokasi akurat.
Pengingat pemberian lokasi latar belakang
Di Android 10 (API level 29) dan yang lebih tinggi, saat fitur dalam aplikasi Anda mengakses lokasi perangkat di latar belakang untuk pertama kalinya setelah pengguna memberikan akses lokasi latar belakang, sistem akan menjadwalkan notifikasi untuk dikirimkan kepada pengguna. Notifikasi ini mengingatkan pengguna bahwa mereka telah mengizinkan aplikasi untuk mengakses lokasi perangkat sepanjang waktu. Contoh notifikasi muncul pada gambar 8.
Memeriksa persyaratan lokasi di dependensi SDK aplikasi
Periksa apakah aplikasi Anda menggunakan SDK yang bergantung pada izin akses lokasi,
terutama izin ACCESS_FINE_LOCATION
. Baca postingan blog Mengenal
perilaku dependensi SDK di Medium untuk
mengetahui informasi selengkapnya.
Referensi lainnya
Untuk mengetahui informasi selengkapnya tentang izin akses lokasi di Android, lihat materi berikut:
Codelab
Video
Contoh
- Aplikasi contoh untuk menunjukkan penggunaan izin akses lokasi.