Izin aplikasi membantu mendukung privasi pengguna dengan melindungi akses ke hal-hal berikut:
- Data yang dibatasi, seperti status sistem dan informasi kontak pengguna
- Tindakan yang dibatasi, seperti menghubungkan ke perangkat yang disambungkan dan merekam audio
Halaman ini menyediakan ringkasan tentang cara kerja izin Android, seperti alur kerja tingkat tinggi untuk menggunakan izin, deskripsi berbagai jenis izin, dan beberapa praktik terbaik untuk menggunakan izin di aplikasi Anda. Halaman lain menjelaskan cara meminimalkan permintaan izin aplikasi, mendeklarasikan izin, meminta izin runtime, dan membatasi interaksi aplikasi lain dengan komponen aplikasi Anda.
Untuk melihat daftar lengkap izin aplikasi Android, kunjungi halaman referensi API izin.
Untuk melihat beberapa aplikasi contoh yang mendemonstrasikan alur kerja izin, kunjungi repositori contoh izin Android di GitHub.
Alur kerja untuk menggunakan izin
Jika aplikasi Anda menawarkan fungsi yang mungkin memerlukan akses ke data yang dibatasi atau tindakan yang dibatasi, tentukan apakah Anda bisa mendapatkan informasi atau melakukan tindakan tersebut tanpa perlu mendeklarasikan izin. Anda dapat memenuhi banyak kasus penggunaan di aplikasi, seperti mengambil foto, menjeda pemutaran media, dan menampilkan iklan yang relevan, tanpa perlu mendeklarasikan izin apa pun.
Jika Anda memutuskan bahwa aplikasi harus mengakses data yang dibatasi atau melakukan tindakan yang dibatasi untuk memenuhi kasus penggunaan, deklarasikan izin yang sesuai. Beberapa izin, yang dikenal sebagai izin waktu penginstalan, diberikan secara otomatis saat aplikasi diinstal. Izin lainnya, yang dikenal sebagai izin runtime, mengharuskan aplikasi Anda untuk meminta izin saat runtime.
Gambar 1 mengilustrasikan alur kerja untuk menggunakan izin aplikasi:
Jenis izin
Android mengategorikan izin ke dalam berbagai jenis, seperti izin waktu penginstalan, izin runtime, dan izin khusus. Setiap jenis izin menunjukkan cakupan data yang dibatasi yang dapat diakses oleh aplikasi, dan cakupan tindakan yang dibatasi yang dapat dilakukan oleh aplikasi, saat sistem memberikan izin ke aplikasi. Tingkat perlindungan untuk setiap izin didasarkan pada jenisnya dan ditampilkan di halaman referensi API izin.
Izin waktu penginstalan
Izin waktu penginstalan memberi aplikasi Anda akses terbatas ke data yang dibatasi atau mengizinkan aplikasi melakukan tindakan yang dibatasi yang berdampak minimal pada sistem atau aplikasi lainnya. Jika Anda mendeklarasikan izin waktu penginstalan di aplikasi, app store akan menampilkan pemberitahuan izin waktu penginstalan kepada pengguna saat mereka melihat halaman detail aplikasi, seperti yang ditunjukkan pada gambar 2. Sistem akan otomatis memberikan izin ke aplikasi Anda saat pengguna menginstal aplikasi.
Android menyertakan beberapa subjenis izin waktu penginstalan, termasuk izin normal dan izin tanda tangan.
Izin normal
Izin ini memungkinkan akses ke data dan tindakan yang melampaui sandbox aplikasi Anda, tetapi berisiko sangat kecil terhadap privasi pengguna dan pengoperasian aplikasi lainnya.
Sistem menetapkan tingkat perlindungan normal
ke izin normal.
Izin tanda tangan
Sistem memberikan izin tanda tangan ke aplikasi hanya jika aplikasi ditandatangani oleh sertifikat yang sama seperti aplikasi atau OS yang menentukan izin.
Aplikasi yang mengimplementasikan layanan dengan hak istimewa, seperti isi otomatis atau layanan VPN, juga memanfaatkan izin tanda tangan. Aplikasi ini memerlukan izin tanda tangan pengikatan layanan sehingga hanya sistem yang dapat mengikat ke layanan.
Sistem menetapkan tingkat perlindungan signature
ke izin tanda tangan.
Izin runtime
Izin runtime, yang juga dikenal sebagai izin berbahaya, memberi aplikasi akses tambahan ke data yang dibatasi atau memungkinkan aplikasi melakukan tindakan yang dibatasi yang berdampak lebih besar pada sistem dan aplikasi lainnya. Oleh karena itu, Anda perlu meminta izin runtime di aplikasi sebelum dapat mengakses data yang dibatasi atau melakukan tindakan yang dibatasi. Jangan berasumsi bahwa izin tersebut telah diberikan sebelumnya—periksa dan jika perlu, minta izin tersebut sebelum setiap akses.
Saat aplikasi meminta izin runtime, sistem akan menampilkan permintaan izin runtime seperti yang ditunjukkan pada gambar 3.
Ada banyak izin runtime yang mengakses data pribadi pengguna, yaitu jenis khusus data yang dibatasi yang mencakup informasi berpotensi sensitif. Contoh data pengguna pribadi mencakup informasi lokasi dan kontak.
Mikrofon dan kamera menyediakan akses ke informasi yang sangat sensitif. Oleh karena itu, sistem ini membantu Anda menjelaskan mengapa aplikasi Anda mengakses informasi ini.
Sistem menetapkan tingkat perlindungan dangerous
ke izin runtime.
Izin khusus
Izin khusus berkaitan dengan operasi aplikasi tertentu. Hanya platform dan OEM yang dapat menentukan izin khusus. Selain itu, platform dan OEM biasanya menentukan izin khusus saat mereka ingin melindungi akses ke tindakan yang berpengaruh besar, seperti menutup aplikasi lain.
Halaman Akses aplikasi khusus di setelan sistem berisi sekumpulan operasi yang dapat diubah oleh pengguna. Banyak dari operasi ini diterapkan sebagai izin khusus.
Pelajari lebih lanjut cara meminta izin khusus.
Sistem menetapkan tingkat perlindungan appop
ke izin khusus.
Grup izin
Izin dapat tergabung dalam grup izin. Grup izin terdiri dari sekumpulan izin yang terkait secara logis. Misalnya, izin untuk mengirim dan menerima pesan SMS mungkin termasuk dalam grup yang sama, karena keduanya terkait dengan interaksi aplikasi dengan SMS.
Grup izin membantu sistem meminimalkan jumlah dialog sistem yang ditunjukkan kepada pengguna saat aplikasi meminta izin yang terkait erat. Saat pengguna melihat permintaan untuk memberikan izin bagi aplikasi, izin dari grup yang sama akan ditampilkan di antarmuka yang sama. Namun, izin dapat berpindah grup tanpa pemberitahuan, jadi jangan berasumsi bahwa izin tertentu dikelompokkan dengan izin lainnya.
Praktik terbaik
Izin aplikasi dibuat berdasarkan fitur keamanan sistem dan membantu Android mendukung sasaran berikut terkait privasi pengguna:
- Kontrol: Pengguna memiliki kontrol atas data yang mereka bagikan kepada aplikasi.
- Transparansi: Pengguna memahami data apa yang digunakan oleh aplikasi, serta alasan aplikasi mengakses data ini.
- Minimalisasi data: Aplikasi mengakses dan hanya menggunakan data yang diperlukan untuk tugas atau tindakan tertentu yang diminta oleh pengguna.
Bagian ini menampilkan sejumlah praktik terbaik utama untuk menggunakan izin secara efektif di aplikasi. Untuk mengetahui lebih lanjut cara menggunakan izin di Android, kunjungi halaman praktik terbaik izin aplikasi.
Meminta jumlah izin minimal
Saat pengguna meminta tindakan tertentu di aplikasi, aplikasi seharusnya hanya meminta izin yang diperlukan untuk menyelesaikan tindakan tersebut. Bergantung pada cara Anda menggunakan izin, mungkin ada cara alternatif untuk memenuhi kasus penggunaan aplikasi tanpa mengandalkan akses ke informasi sensitif.
Kaitkan izin runtime dengan tindakan tertentu
Minta izin selambat mungkin ke dalam alur kasus penggunaan aplikasi. Misalnya, jika aplikasi Anda mengizinkan pengguna mengirim pesan audio kepada orang lain, tunggu hingga pengguna membuka layar pesan dan menekan tombol Kirim pesan audio. Setelah pengguna menekan tombol tersebut, aplikasi kemudian dapat meminta akses ke mikrofon.
Pertimbangkan dependensi aplikasi Anda
Jika Anda menyertakan library, aplikasi juga akan mewarisi persyaratan izinnya. Perhatikan izin yang diperlukan oleh setiap dependensi, dan juga tujuan penggunaan izin tersebut.
Bersikaplah transparan
Saat membuat permintaan izin, jelaskan data apa yang Anda akses, alasannya, dan fungsi apa yang terpengaruh jika izin ditolak, sehingga pengguna dapat membuat keputusan yang tepat.
Menyatakan akses sistem secara eksplisit
Saat Anda mengakses data atau hardware yang sensitif, seperti kamera atau mikrofon, berikan indikasi berkelanjutan pada aplikasi Anda jika sistem belum menyediakan indikator ini. Pengingat ini membantu pengguna memahami secara persis kapan aplikasi Anda mengakses data yang dibatasi atau melakukan tindakan yang dibatasi.
Izin dalam komponen sistem
Izin tidak hanya untuk meminta fungsi sistem. Komponen sistem aplikasi dapat membatasi aplikasi lain yang dapat berinteraksi dengan aplikasi tersebut, seperti yang dijelaskan di halaman cara membatasi interaksi dengan aplikasi lain.