Permintaan izin melindungi informasi sensitif yang tersedia dari perangkat dan hanya boleh digunakan saat akses ke informasi diperlukan agar aplikasi Anda berfungsi. Dokumen ini memberikan tips tentang cara Anda dapat memperoleh fungsi yang sama (atau lebih baik) tanpa memerlukan akses ke informasi tersebut. Ini bukan diskusi lengkap tentang cara kerja izin di sistem operasi Android.
Untuk pembahasan umum lainnya tentang izin Android, lihat Ringkasan izin. Untuk detail tentang cara menangani izin dalam kode, lihat Meminta izin aplikasi.
Izin di Android 6.0 dan yang lebih baru
Di Android 6.0 (API level 23) dan yang lebih tinggi, aplikasi dapat meminta izin dari pengguna saat runtime, bukan sebelum penginstalan. Hal ini memungkinkan aplikasi meminta izin saat aplikasi benar-benar memerlukan layanan atau data yang dilindungi oleh layanan tersebut. Meskipun tidak (selalu) mengubah perilaku aplikasi secara menyeluruh, model ini mengakibatkan beberapa perubahan yang relevan dengan cara menangani data sensitif pengguna:
Konteks situasional meningkat
Pengguna dimintai izin pada saat runtime, dalam konteks aplikasi Anda, untuk mengakses fungsi yang dicakup oleh grup izin tersebut. Pengguna akan lebih peka terhadap konteks permintaan izin, dan jika ada ketidakcocokan antara izin yang Anda minta dengan tujuan aplikasi Anda, maka akan lebih penting lagi untuk memberikan penjelasan terperinci kepada pengguna mengenai alasan Anda meminta izin tersebut. Jika memungkinkan, sebaiknya berikan penjelasan tentang permintaan ini baik pada saat meminta izin maupun dalam dialog tindak lanjut jika pengguna menolak permintaan tersebut.
Untuk meningkatkan kemungkinan diterimanya permintaan izin, cukup minta izin saat fitur tertentu diperlukan. Misalnya, hanya minta akses mikrofon saat pengguna mengklik tombol mikrofon. Pengguna kemungkinan besar memberikan izin yang mereka harapkan.
Fleksibilitas yang lebih besar dalam memberikan izin
Pengguna dapat menolak akses ke izin tertentu pada saat diminta dan di setelan, tetapi ia mungkin tetap akan terkejut saat penolakan ini menyebabkan kerusakan fungsi. Sebaiknya pantau jumlah pengguna yang menolak izin (misalnya, menggunakan Google Analytics) agar Anda dapat memfaktorkan ulang aplikasi guna menghindari ketergantungan pada izin tersebut, atau berikan penjelasan yang lebih baik tentang alasan aplikasi memerlukan izin agar dapat berfungsi dengan baik. Anda juga perlu memastikan bahwa aplikasi Anda menangani pengecualian saat pengguna menolak permintaan izin atau menonaktifkan izin pada setelan.
Beban transaksi meningkat
Pengguna diminta memberikan akses untuk grup izin satu per satu, bukan sebagai kumpulan. Oleh karena itu, penting sekali bagi Anda untuk meminimalkan jumlah izin yang diminta. Hal ini meningkatkan beban pengguna untuk memberikan izin sehingga memperbesar kemungkinan bahwa setidaknya satu permintaan akan ditolak.
Izin yang meminta menjadi pengendali default
Beberapa aplikasi bergantung pada akses ke informasi pengguna sensitif terkait log panggilan dan pesan SMS. Jika ingin meminta izin khusus untuk log panggilan dan pesan SMS serta memublikasikan aplikasi ke Play Store, Anda harus meminta pengguna menetapkan aplikasi Anda sebagai pengendali default untuk fungsi sistem inti sebelum meminta izin runtime ini.
Untuk informasi selengkapnya tentang pengendali default, termasuk cara menampilkan permintaan pengendali default kepada pengguna, lihat panduan tentang izin yang hanya digunakan dalam pengendali default.
Mengetahui library yang Anda gunakan
Terkadang, library yang Anda gunakan dalam aplikasi memerlukan izin. Misalnya,
library iklan dan analisis mungkin memerlukan akses ke grup izin
LOCATION
untuk mengimplementasikan fungsi yang
diperlukan. Namun, dari sudut pandang pengguna, permintaan izin ini berasal dari
aplikasi Anda, bukan dari library.
Sama seperti pengguna yang memilih aplikasi dengan permintaan izin lebih sedikit untuk fungsi
yang sama, developer perlu meninjau library mereka dan memilih
SDK pihak ketiga yang tidak menggunakan izin yang tidak perlu. Misalnya, jika
Anda menggunakan library yang menyediakan fungsi lokasi, pastikan Anda
tidak meminta izin FINE_LOCATION
kecuali jika Anda
menggunakan fungsi penargetan berbasis lokasi.
Membatasi akses latar belakang ke lokasi
Saat aplikasi Anda berjalan di latar belakang, akses ke lokasi harus diwajibkan untuk fungsi inti aplikasi dan menunjukkan manfaat yang jelas bagi pengguna.
Pengujian untuk kedua model izin
Di Android 6.0 (API level 23) dan yang lebih tinggi, pengguna memberikan dan mencabut izin aplikasi pada saat runtime, bukan saat menginstal aplikasi. Akibatnya, Anda harus menguji aplikasi dalam berbagai kondisi. Sebelum Android 6.0, Anda bisa berasumsi bahwa selama bisa berjalan, aplikasi Anda memiliki semua izin yang dideklarasikan dalam manifes aplikasi. Sekarang, pengguna dapat mengaktifkan atau menonaktifkan izin untuk semua aplikasi, terlepas dari level API. Anda harus melakukan pengujian untuk memastikan aplikasi berfungsi dengan benar di berbagai skenario izin.
Tips berikut akan membantu Anda mengidentifikasi masalah kode terkait izin pada perangkat yang menjalankan API level 23 atau lebih tinggi:
- Identifikasi izin aplikasi Anda saat ini dan lokasi kode yang terkait.
- Uji alur pengguna pada semua layanan dan data yang dilindungi izin.
- Uji dengan berbagai kombinasi izin yang diberikan atau dicabut. Misalnya,
aplikasi kamera mungkin mencantumkan
CAMERA
,READ_CONTACTS
, danACCESS_FINE_LOCATION
dalam manifesnya. Anda harus menguji aplikasi dengan setiap izin tersebut diaktifkan dan dinonaktifkan, untuk memastikan aplikasi bisa menangani semua konfigurasi izin dengan baik. - Gunakan alat adb untuk mengelola
izin dari command line:
- Cantumkan daftar izin dan status menurut grupnya:
$ adb shell pm list permissions -d -g
- Beri atau cabut satu atau beberapa izin:
$ adb shell pm [grant|revoke] <permission-name> ...
- Cantumkan daftar izin dan status menurut grupnya:
- Analisis aplikasi Anda untuk mengidentifikasi layanan yang menggunakan izin.
Referensi lainnya
- Pedoman Desain Material untuk izin Android
- Android Marshmallow 6.0: Meminta Izin: Video ini menjelaskan model izin runtime Android dan cara yang benar untuk meminta izin kepada pengguna.
- Jelaskan alasan aplikasi memerlukan izin
- Praktik terbaik untuk ID unik