Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Meminta izin akses lokasi

Untuk melindungi privasi pengguna, aplikasi yang menggunakan layanan lokasi harus meminta izin akses lokasi.

Saat Anda meminta izin akses lokasi, ikuti praktik terbaik yang sama seperti yang Anda lakukan untuk izin waktu proses lainnya. Satu perbedaan penting dalam hal izin akses lokasi adalah sistem menyertakan beberapa izin yang 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 memberikan panduan cara meminta izin akses lokasi dalam setiap kasus.

Jenis akses lokasi

Izin akses lokasi Android berhubungan dengan kategori akses lokasi berikut:

Bagian ini menjelaskan situasi saat aplikasi Anda menggunakan setiap kategori.

Lokasi latar depan

Jika aplikasi Anda berisi fitur yang berbagi atau menerima informasi lokasi hanya sekali, 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 yang termasuk dalam aplikasi Anda terlihat.
  • Aplikasi Anda menjalankan layanan latar depan. Saat layanan latar depan berjalan, sistem akan meningkatkan kesadaran pengguna dengan menampilkan notifikasi persisten. Aplikasi Anda mempertahankan akses jika ditempatkan di latar belakang, seperti saat pengguna menekan tombol Beranda atau menonaktifkan layar perangkatnya.

    Selain itu, sebaiknya Anda mendeklarasikan jenis layanan latar depan location, seperti yang ditunjukkan dalam cuplikan kode berikut. Pada Android 10 (API level 29), Anda harus mendeklarasikan jenis layanan latar depan ini.

    <!-- Recommended for Android 9 (API level 28) and lower. -->
    <!-- Required for Android 10 (API level 29). -->
    <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 ... >
  <!-- To request foreground location access, declare one of these permissions. -->
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>

Tingkat presisi bergantung pada izin yang Anda minta:

ACCESS_COARSE_LOCATION
Memberikan akurasi lokasi dalam blok kota.
ACCESS_FINE_LOCATION
Memberikan lokasi yang lebih akurat daripada yang diberikan saat Anda meminta ACCESS_COARSE_LOCATION. Izin ini diperlukan untuk beberapa tugas konektivitas, seperti menyambungkan ke perangkat di sekitar melalui Bluetooth Hemat Energi (BLE).

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 rumah mereka, sehingga perangkat akan nonaktif ketika pengguna meninggalkan rumah dan aktif kembali ketika 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.

Pada Android 10 (API level 29), Anda harus mendeklarasikan izin ACCESS_BACKGROUND_LOCATION dalam manifes aplikasi Anda untuk meminta akses lokasi latar belakang pada waktu proses. 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). -->
  <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
</manifest>

Meminta akses lokasi pada waktu proses

Saat suatu fitur di aplikasi Anda memerlukan akses lokasi, tunggu hingga pengguna berinteraksi dengan fitur tersebut sebelum membuat permintaan izin. Alur kerja ini mengikuti praktik terbaik untuk meminta izin waktu proses dalam konteks, seperti yang dijelaskan dalam panduan yang menjelaskan cara meminta izin aplikasi.

Gambar 1 menunjukkan contoh cara melakukan proses ini. Aplikasi ini berisi fitur "berbagi lokasi" yang memerlukan akses lokasi latar depan. Namun, aplikasi tidak meminta izin akses lokasi, sampai pengguna memilih tombol Bagikan lokasi.

Setelah pengguna memilih tombol Bagikan Lokasi, dialog izin akses lokasi sistem akan muncul
Gambar 1. Fitur berbagi lokasi yang memerlukan akses lokasi latar depan. Fitur ini diaktifkan jika pengguna memilih Izinkan hanya saat aplikasi digunakan.

Meskipun beberapa fitur di aplikasi Anda memerlukan akses lokasi, sepertinya hanya beberapa di antaranya yang memerlukan akses lokasi latar belakang. Oleh karena itu, sebaiknya aplikasi Anda menjalankan permintaan inkremental untuk izin lokasi, yang meminta akses lokasi latar depan, lalu akses lokasi latar belakang. Dengan melakukan permintaan inkremental, Anda memberikan lebih banyak kontrol dan transparansi kepada pengguna karena mereka dapat lebih memahami fitur mana di aplikasi Anda yang memerlukan akses lokasi latar belakang.

Gambar 2 menunjukkan contoh aplikasi yang dirancang untuk menangani permintaan inkremental. Fitur "tampilkan lokasi saat ini" dan "rekomendasikan tempat-tempat terdekat" memerlukan akses lokasi latar depan. Namun, hanya fitur "rekomendasikan tempat-tempat terdekat", yang memerlukan akses lokasi latar belakang.

Tombol yang mengaktifkan akses lokasi latar depan diposisikan setengah layar dari tombol yang mengaktifkan lokasi latar belakang
Gambar 2. Kedua fitur tersebut memerlukan akses lokasi, tetapi hanya fitur "rekomendasikan tempat-tempat terdekat" yang memerlukan akses lokasi latar belakang.

Proses untuk melakukan permintaan inkremental adalah sebagai berikut:

  1. Pada awalnya, aplikasi Anda harus memandu pengguna ke fitur yang memerlukan akses lokasi latar depan, seperti fitur "berbagi lokasi" pada Gambar 1 atau fitur "tampilkan lokasi saat ini" pada Gambar 2.

    Sebaiknya Anda menonaktifkan akses pengguna ke fitur yang memerlukan akses lokasi latar belakang sampai aplikasi Anda memiliki akses lokasi latar depan.

  2. Dialog menyertakan opsi untuk memberikan akses lokasi latar belakang atau mempertahankan akses lokasi latar depan
    Gambar 3. Mengingat bahwa aplikasi telah diberi akses latar depan, dialog ini akan muncul saat aplikasi meminta akses lokasi latar belakang.

    Nantinya, jika pengguna menjelajahi fungsionalitas yang memerlukan akses lokasi latar belakang, Anda dapat meminta akses lokasi latar belakang. Sistem akan menampilkan dialog yang mirip dengan yang ditampilkan pada Gambar 3.

    Saat fitur di 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 4.

    Pengguna dapat mengetuk notifikasi sistem untuk mengubah setelan lokasi untuk aplikasi
    Gambar 4. Notifikasi mengingatkan pengguna bahwa mereka telah memberikan akses lokasi latar belakang ke suatu aplikasi.