Evaluasi apakah aplikasi Anda perlu mendeklarasikan izin

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.

Pertimbangkan apakah aplikasi terinstal lainnya mungkin dapat menjalankan fungsi atas nama aplikasi Anda. Dalam kasus ini, Anda harus mendelegasikan tugas ke aplikasi lain menggunakan intent. Dalam melakukannya, Anda tidak perlu mendeklarasikan izin yang diperlukan karena aplikasi lain akan mendeklarasikan izin tersebut.

Alternatif untuk mendeklarasikan izin

Bagian 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 memerlukan perkiraan kasar lokasi perangkat, dalam jarak sekitar 2 km. Dalam situasi ini, Anda dapat mendeklarasikan izin ACCESS_COARSE_LOCATION. Sebaiknya Anda tidak mendeklarasikan izin, dan sebagai gantinya meminta pengguna untuk memasukkan alamat atau kode pos.

Kasus penggunaan lainnya memerlukan perkiraan lokasi perangkat yang lebih presisi. Hanya dalam situasi tersebut, tidak masalah untuk mendeklarasikan izin ACCESS_FINE_LOCATION.

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 media atau dokumen aplikasi lainnya

Aplikasi Anda dapat menampilkan konten yang dibuat aplikasi lain, seperti foto, video, atau file teks.

Dalam situasi ini, jangan deklarasikan izin READ_EXTERNAL_STORAGE. Selain itu, jangan akses langsung perangkat penyimpanan bersama atau eksternal menggunakan metode seperti getExternalStorageDirectory(), yang tidak digunakan lagi pada Android 10 (API level 29). Sebagai gantinya, gunakan penyimpanan media perangkat untuk membuka file media, dan Storage Access Framework untuk membuka dokumen dan file lainnya.

Mengidentifikasi perangkat yang menjalankan instance aplikasi Anda

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 akses langsung IMEI perangkat. Faktanya, pada Android 10 (API level 29), Anda tidak dapat melakukannya. Sebagai gantinya, lakukan salah satu hal berikut:

  • Mendapatkan 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 disempurnakan 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.

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.

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 API CallScreeningService.