Seperti yang disebutkan dalam alur kerja untuk menggunakan izin, jika aplikasi Anda meminta izin aplikasi, Anda harus mendeklarasikan izin ini dalam file manifes aplikasi. Deklarasi ini membantu app store dan pengguna memahami kumpulan izin yang mungkin diminta aplikasi Anda.
Proses untuk meminta izin bergantung pada jenis izin:
- Jika izin adalah izin waktu penginstalan, seperti izin normal atau izin tanda tangan, izin tersebut akan otomatis diberikan pada waktu penginstalan.
- Jika izin adalah izin runtime atau izin khusus, dan jika aplikasi diinstal di perangkat yang menjalankan Android 6.0 (API level 23) atau lebih tinggi, Anda harus meminta izin runtime atau izin khusus sendiri.
Menambahkan deklarasi ke manifes aplikasi
Untuk mendeklarasikan izin yang mungkin diminta aplikasi Anda, sertakan elemen
<uses-permission>
yang sesuai dalam
file manifes aplikasi Anda. Misalnya, aplikasi yang perlu mengakses kamera
memiliki baris berikut di AndroidManifest.xml
:
<manifest ...> <uses-permission android:name="android.permission.CAMERA"/> <application ...> ... </application> </manifest>
Mendeklarasikan hardware sebagai opsional
Beberapa izin, seperti
CAMERA
, memungkinkan aplikasi Anda
mengakses hardware yang hanya dimiliki oleh beberapa perangkat Android. Jika aplikasi Anda
mendeklarasikan salah satu izin terkait
hardware ini,
pertimbangkan apakah aplikasi Anda masih dapat berjalan di perangkat yang tidak memiliki
hardware tersebut. Dalam sebagian besar kasus, hardware bersifat opsional, jadi sebaiknya deklarasikan
hardware sebagai opsional dengan menyetel android:required
ke false
di
deklarasi <uses-feature>
, seperti
yang ditampilkan di cuplikan kode berikut dari file AndroidManifest.xml
:
<manifest ...> <application> ... </application> <uses-feature android:name="android.hardware.camera" android:required="false" /> <manifest>
Menentukan ketersediaan hardware
Jika Anda mendeklarasikan hardware sebagai opsional, aplikasi Anda mungkin dapat dijalankan di
perangkat yang tidak memiliki hardware tersebut. Untuk memeriksa apakah perangkat memiliki
bagian hardware tertentu, gunakan metode
hasSystemFeature()
, seperti yang ditampilkan dalam cuplikan kode berikut. Jika hardware tidak tersedia,
nonaktifkan fitur tersebut dengan lancar di aplikasi Anda.
Kotlin
// Check whether your app is running on a device that has a front-facing camera. if (applicationContext.packageManager.hasSystemFeature( PackageManager.FEATURE_CAMERA_FRONT)) { // Continue with the part of your app's workflow that requires a // front-facing camera. } else { // Gracefully degrade your app experience. }
Java
// Check whether your app is running on a device that has a front-facing camera. if (getApplicationContext().getPackageManager().hasSystemFeature( PackageManager.FEATURE_CAMERA_FRONT)) { // Continue with the part of your app's workflow that requires a // front-facing camera. } else { // Gracefully degrade your app experience. }
Mendeklarasikan izin berdasarkan API level
Untuk mendeklarasikan izin hanya pada perangkat yang mendukung izin runtime, yakni
perangkat yang menjalankan Android 6.0 (API level 23) atau yang lebih baru, sertakan elemen <uses-permission-sdk-23>
,
bukan elemen
<uses-permission>
.
Saat menggunakan salah satu elemen ini, Anda dapat menetapkan atribut maxSdkVersion
untuk menunjukkan bahwa perangkat yang menjalankan versi Android lebih tinggi dari
nilai yang ditentukan tidak memerlukan izin tertentu. Hal ini memungkinkan Anda
menghapus izin yang tidak diperlukan sambil tetap memberikan kompatibilitas
untuk perangkat yang lebih lama.
Misalnya, 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. Namun, untuk kompatibilitas dengan perangkat yang lebih lama,
Anda dapat mendeklarasikan izin READ_EXTERNAL_STORAGE
dan menetapkan
android:maxSdkVersion
ke 28.