Mendeklarasikan izin aplikasi

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.