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 yang dibuat oleh aplikasi

Aplikasi Anda mungkin menampilkan konten media, seperti foto atau video, yang dibuat oleh pengguna saat berada di aplikasi. Dalam situasi ini, Anda tidak perlu menggunakan izin READ_EXTERNAL_STORAGE di perangkat yang menjalankan Android 10 (API level 29) atau yang lebih tinggi, selama aplikasi Anda menargetkan Android 10 atau yang lebih tinggi. Jika aplikasi Anda menargetkan Android 10, pilih untuk tidak menggunakan penyimpanan terbatas.

Untuk kompatibilitas dengan perangkat yang lebih lama, deklarasikan izin READ_EXTERNAL_STORAGE, lalu setel android:maxSdkVersion ke 28.

Cari file di salah satu koleksi berikut, yang sangat dikenal oleh penyimpanan media:

Gunakan ContentResolver untuk mengkueri konten media langsung dari penyimpanan media, daripada mencoba menemukan konten media sendiri.

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, Anda tidak perlu menggunakan izin READ_EXTERNAL_STORAGE di perangkat yang menjalankan Android 10 atau yang lebih tinggi, selama aplikasi Anda menargetkan Android 10 atau yang lebih tinggi. Jika aplikasi Anda menargetkan Android 10, pilih untuk tidak menggunakan penyimpanan terbatas.

Untuk kompatibilitas dengan perangkat yang lebih lama, deklarasikan izin READ_EXTERNAL_STORAGE, lalu setel 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 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.