Meminimalkan permintaan izin

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Sebelum mendeklarasikan izin di aplikasi, pertimbangkan apakah Anda perlu melakukannya atau tidak. Setiap kali pengguna mencoba fitur aplikasi yang memerlukan izin runtime, aplikasi Anda harus mengganggu tugas pengguna dengan permintaan izin. Kemudian, pengguna harus membuat keputusan. Jika pengguna tidak memahami alasan aplikasi meminta izin tertentu, mereka dapat menolak izin tersebut atau bahkan meng-uninstal aplikasi.

Selain itu, setiap kali mendeklarasikan izin baru, Anda harus meninjau cara aplikasi Anda meminta dan membagikan data pengguna. Beberapa API dan izin yang sangat sensitif mengharuskan Anda memberikan pengungkapan dalam aplikasi terkait akses, pengumpulan, penggunaan, dan pembagian data oleh Anda.

Pertimbangkan apakah Anda memerlukan izin tersebut atau apakah ada cara alternatif untuk mendukung fungsi di aplikasi Anda. Sistem ini menyediakan kontrak bawaan untuk berbagai operasi file dan juga mendukung kontrak kustom.

Jika Anda harus mendeklarasikan izin, selalu hormati keputusan pengguna dan berikan cara untuk menurunkan pengalaman aplikasi Anda secara halus.

Halaman ini menjelaskan beberapa kasus penggunaan yang dapat dipenuhi aplikasi Anda tanpa mendeklarasikan perlunya izin apa pun.

Menampilkan tempat-tempat terdekat

Aplikasi Anda mungkin perlu mengetahui perkiraan lokasi pengguna. Hal ini berguna untuk menampilkan informasi berbasis lokasi, seperti restoran di sekitar.

Beberapa kasus penggunaan hanya memerlukan perkiraan kasar lokasi perangkat. Dalam situasi ini, lakukan salah satu tindakan berikut, bergantung pada seberapa sering aplikasi memerlukan informasi berbasis lokasi:

  • Jika aplikasi Anda sering kali memerlukan lokasi, deklarasikan izin ACCESS_COARSE_LOCATION. Izin tersebut memberikan perkiraan lokasi perangkat dari layanan lokasi, seperti yang dijelaskan dalam dokumentasi tentang akurasi perkiraan lokasi.
  • Jika aplikasi Anda lebih jarang memerlukan lokasi, atau hanya sekali, pertimbangkan untuk meminta pengguna memasukkan alamat atau kode pos.

Kasus penggunaan lainnya memerlukan perkiraan lokasi perangkat yang lebih presisi. Situasi ini adalah satu-satunya situasi ketika Anda dapat mendeklarasikan izin ACCESS_FINE_LOCATION.

Membuat dan mengakses file

Android memungkinkan Anda membuat dan mengakses file tanpa perlu mendeklarasikan izin apa pun yang terkait dengan penyimpanan atau sensor.

Mengambil foto

Pengguna dapat mengambil gambar di aplikasi Anda menggunakan aplikasi kamera sistem yang telah diinstal sebelumnya.

Dalam situasi ini, jangan deklarasikan izin CAMERA. Sebagai gantinya, panggil tindakan intent ACTION_IMAGE_CAPTURE.

Merekam video

Pengguna dapat merekam video di aplikasi Anda menggunakan aplikasi kamera sistem yang telah diinstal sebelumnya.

Dalam situasi ini, jangan deklarasikan izin CAMERA. Sebagai gantinya, panggil tindakan intent ACTION_VIDEO_CAPTURE.

Membuka file media

Aplikasi Anda mungkin mengizinkan pengguna memilih dari foto dan video mereka, seperti untuk lampiran pesan atau foto profil.

Untuk mendukung fungsi ini, gunakan pemilih foto. Pemilih foto tidak memerlukan izin runtime untuk menggunakannya. Saat pengguna berinteraksi dengan pemilih foto untuk memilih foto atau video yang akan dibagikan ke aplikasi Anda, sistem akan memberikan akses baca sementara ke URI yang terkait dengan file media yang dipilih.

Jika aplikasi Anda perlu mengakses file media tanpa menggunakan pemilih foto, Anda tidak perlu mendeklarasikan izin penyimpanan apa pun:

Membuka dokumen

Aplikasi Anda mungkin menampilkan dokumen yang dibuat oleh pengguna, baik di aplikasi Anda maupun di aplikasi lain. Contoh umumnya adalah file teks.

Dalam situasi ini, deklarasikan READ_EXTERNAL_STORAGE hanya untuk kompatibilitas dengan perangkat lama. Tetapkan android:maxSdkVersion ke 28.

Bergantung pada aplikasi yang membuat dokumen, lakukan salah satu hal berikut:

Mengidentifikasi perangkat yang menjalankan instance aplikasi

Instance tertentu dari aplikasi Anda mungkin perlu mengetahui perangkat yang menjalankannya. Hal ini berguna untuk aplikasi yang memiliki preferensi atau pesan khusus perangkat, seperti playlist yang berbeda untuk perangkat TV dan perangkat wearable.

Dalam situasi ini, jangan mengakses IMEI perangkat secara langsung. Sebenarnya, Anda tidak dapat melakukannya mulai Android 10. Sebagai gantinya, lakukan salah satu hal berikut:

  • Dapatkan ID perangkat unik untuk instance aplikasi Anda menggunakan library ID Instance.
  • Membuat ID Anda sendiri yang dicakup dalam penyimpanan aplikasi. Menggunakan fungsi sistem dasar, seperti randomUUID().

Menyambungkan dengan perangkat melalui Bluetooth

Aplikasi Anda mungkin menawarkan pengalaman yang ditingkatkan dengan mentransfer data ke perangkat lain melalui Bluetooth.

Untuk mendukung fungsi ini, jangan deklarasikan izin ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATIION, atau BLUETOOTH_ADMIN. Sebagai gantinya, gunakan penyambungan perangkat pendamping.

Memasukkan nomor kartu pembayaran secara otomatis

Layanan Google Play menawarkan library yang memungkinkan Anda memasukkan nomor kartu pembayaran secara otomatis. Daripada mendeklarasikan izin CAMERA, Anda dapat menggunakan library pengenalan kartu debit dan kredit.

Menjeda media saat aplikasi Anda terganggu

Jika pengguna menerima panggilan telepon, atau jika alarm yang dikonfigurasi pengguna muncul, aplikasi Anda harus menjeda pemutaran media apa pun hingga aplikasi Anda mendapatkan kembali fokus audio.

Untuk mendukung fungsi ini, jangan deklarasikan izin READ_PHONE_STATE. Sebagai gantinya, terapkan pengendali peristiwa onAudioFocusChange(), yang berjalan secara otomatis saat sistem mengalihkan fokus audio. Pelajari selengkapnya tentang cara menerapkan fokus audio.

Mengelola panggilan telepon dan pesan teks

Layanan Android dan Google Play menawarkan library yang memungkinkan Anda mengelola panggilan telepon dan pesan teks tanpa perlu mendeklarasikan izin apa pun terkait panggilan telepon atau pesan SMS.

Memasukkan kode sandi sekali pakai secara otomatis

Untuk menyederhanakan alur kerja autentikasi 2 langkah, aplikasi Anda dapat otomatis memasukkan kode sandi sekali pakai yang dikirim ke perangkat pengguna untuk memverifikasi identitas mereka.

Untuk mendukung fungsi ini di perangkat yang didukung oleh layanan Google Play, jangan deklarasikan izin READ_SMS. Sebagai gantinya, gunakan SMS Retriever API.

Di perangkat lain, jika aplikasi Anda menargetkan Android 8.0 (API level 26) atau yang lebih baru, buat token khusus aplikasi menggunakan createAppSpecificSmsToken(). Teruskan token ini ke aplikasi atau layanan lain yang dapat mengirimkan pesan SMS verifikasi.

Memasukkan nomor telepon pengguna secara otomatis

Untuk memberikan dukungan atau penjualan yang lebih efisien, aplikasi Anda dapat mengizinkan pengguna memasukkan nomor telepon perangkat secara otomatis.

Untuk mendukung fungsi ini di perangkat yang didukung oleh layanan Google Play, jangan deklarasikan izin READ_PHONE_STATE. Sebagai gantinya, gunakan library Phone Number Hint.

Memfilter panggilan telepon

Untuk meminimalkan gangguan yang tidak perlu bagi pengguna, aplikasi Anda dapat memfilter spam pada panggilan telepon.

Untuk mendukung fungsi ini, jangan deklarasikan izin READ_PHONE_STATE. Sebagai gantinya, gunakan CallScreeningService API.

Menelepon

Aplikasi Anda mungkin menawarkan kemampuan untuk melakukan panggilan telepon dengan mengetuk informasi kontak.

Untuk mendukung fungsi ini, gunakan tindakan intent ACTION_DIAL, bukan tindakan ACTION_CALL. ACTION_CALL memerlukan izin waktu penginstalan CALL_PHONE, yang mencegah perangkat yang tidak dapat melakukan panggilan, seperti beberapa tablet, agar tidak menginstal aplikasi Anda.