Normal Permission di Android — apa itu, level perlindungan dan prinsip kerja

Penulis: IT Sectr Diterbitkan: 2026-05-20 Waktu membaca: 8 mnt

Normal Permission — kategori izin di Android yang diberikan sistem secara otomatis tanpa meminta pengguna. Menurut Android Developer Documentation, 2024, izin normal memiliki ProtectionLevel normal dan tidak memerlukan dialog runtime, berbeda dengan izin berbahaya. Izin ini mencakup akses ke internet, status jaringan, dan getaran, tanpa menimbulkan risiko bagi data rahasia pengguna.

Poin Utama

  • Normal Permission — kategori izin Android dengan ProtectionLevel normal, diberikan secara otomatis saat pemasangan.
  • Untuk menggunakannya, cukup tambahkan uses-permission di manifes — dialog tidak ditampilkan kepada pengguna.
  • Perbedaan utama dari izin berbahaya — tidak adanya permintaan runtime dan ketidakmungkinan pencabutan melalui pengaturan.
  • Daftar mencakup INTERNET, ACCESS_NETWORK_STATE, VIBRATE, ACCESS_WIFI_STATE dan konstanta sistem lainnya.
  • Tingkat perlindungan dapat diperiksa melalui PackageManager.getPermissionInfo dalam kode aplikasi.

Apa itu Normal Permission di Android

Normal Permission — jenis izin sistem Android dengan ProtectionLevel normal, diberikan kepada aplikasi secara otomatis saat pemasangan. Pengembang tidak perlu menulis kode untuk permintaan — cukup mencantumkan izin di AndroidManifest.xml. Pengguna tidak melihat dialog dan tidak dapat mencabut normal permission secara terpisah, hanya dengan menghapus seluruh aplikasi.

Sistem Android mengklasifikasikan izin normal sebagai berisiko rendah — izin ini tidak memberikan akses ke data pribadi, kamera, atau mikrofon. Contoh tipikal: akses ke internet, manajemen getaran, membaca status Wi-Fi. Menurut Android Security Model (2024), sekitar 40 persen dari seluruh izin sistem termasuk dalam kategori normal.

Properti penting — izin normal tidak dicabut saat runtime melalui Settings. Jika pengguna ingin melarang akses, satu-satunya cara adalah menghapus aplikasi. Pengembang harus mempertimbangkan hal ini dalam arsitektur, tetapi bagi pengguna, pendekatan ini menyederhanakan interaksi: tidak ada dialog saat pertama kali dijalankan.

Sejarah kemunculan kategori

Pembagian menjadi izin normal dan berbahaya muncul di Android 6.0 Marshmallow (API 23). Sebelum versi ini, semua izin diminta saat pemasangan — pengguna melihat satu daftar dan menerima atau menolaknya secara keseluruhan. Normal Permission mempertahankan model ini untuk operasi berisiko rendah, sedangkan Dangerous beralih ke permintaan runtime. Perubahan ini meningkatkan pengalaman pengguna dan sekaligus meningkatkan keamanan.

API apa yang memerlukan Normal Permission

Banyak API sistem Android memerlukan pencantuman eksplisit izin normal, meskipun aksesnya otomatis. Misalnya, kelas ConnectivityManager memerlukan ACCESS_NETWORK_STATE, VibratorService memerlukan VIBRATE, WifiManager memerlukan ACCESS_WIFI_STATE. Tanpa deklarasi uses-permission yang sesuai, pemanggilan API ini akan mengakibatkan SecurityException.

Bagaimana ProtectionLevel normal bekerja

ProtectionLevel normal — tingkat perlindungan minimum dalam Android Permission System. Izin dengan tingkat ini dideklarasikan di manifes, dan sistem memeriksa deklarasi saat pemasangan, memberikan akses tanpa campur tangan pengguna. Tidak ada elemen UI yang ditampilkan, tidak ada callback yang dipanggil.

Mekanisme pemeriksaan bekerja di tingkat PackageManager. Saat pemasangan APK, sistem memindai semua tag uses-permission, menentukan tingkat perlindungan setiap izin melalui pencocokan dengan definisi sistem di file permissions.xml dan untuk normal-level cukup mendaftarkan akses. Prosesnya memakan waktu milidetik dan tidak memerlukan interaksi dengan antarmuka pengguna.

Algoritma pemberiannya sebagai berikut:

  • Sistem membaca manifes saat pemasangan aplikasi
  • Mencocokkan protectionLevel di /etc/permissions/ pada perangkat
  • Pada nilai normal — secara otomatis memberikan akses
  • Izin tetap aktif hingga penghapusan total aplikasi

Pengguna tidak dapat mencabut izin normal melalui antarmuka. Di pengaturan aplikasi di bagian Izin, hanya izin berbahaya yang ditampilkan. Ini kontras dengan iOS, di mana setiap izin memerlukan konfirmasi terpisah terlepas dari tingkat sensitivitas fungsi.

Normal Permission vs Dangerous Permission

Normal dan Dangerous Permission — dua kategori perlindungan yang berlawanan di Android. Perbedaan utama terletak pada cara pemberian: izin normal diberikan secara otomatis saat pemasangan, izin berbahaya memerlukan persetujuan eksplisit melalui dialog runtime. Perbedaan ini tertanam dalam arsitektur keamanan Android mulai versi 6.0 Marshmallow.

Perbandingan karakteristik utama:

KarakteristikNormal PermissionDangerous Permission
ProtectionLevelnormaldangerous
Permintaan penggunaTidak diperlukanDialog runtime wajib
Kemungkinan pencabutanTidak, hanya hapus aplikasiYa, melalui pengaturan kapan saja
Pemeriksaan dalam kodeSelalu PERMISSION_GRANTEDcheckSelfPermission wajib
ContohINTERNET, VIBRATE, ACCESS_NETWORK_STATECAMERA, RECORD_AUDIO, ACCESS_FINE_LOCATION

Perbedaan dalam permintaan pengguna

Pengguna tidak melihat dialog apa pun saat permintaan Normal Permission. Jika aplikasi membutuhkan INTERNET — ia mendapatkannya secara diam-diam. Untuk Dangerous Permission, sistem menampilkan dialog modal dengan deskripsi akses yang diminta. Pengguna menekan Allow atau Deny, dan nantinya dapat mencabut izin kapan saja melalui Settings. Ini adalah perbedaan utama UX yang menentukan strategi pengembangan antarmuka.

Kapan memilih Normal

Normal harus digunakan dalam semua kasus ketika akses tidak menyangkut data sensitif. ACCESS_NETWORK_STATE untuk memeriksa koneksi, VIBRATE untuk umpan balik taktil, INTERNET untuk permintaan HTTP — semuanya adalah izin normal. Menerapkan tingkat dangerous di mana normal sudah cukup adalah praktik buruk, menciptakan dialog yang tidak perlu dan mengurangi kepercayaan pengguna terhadap aplikasi.

Daftar izin normal di Android

Android mendefinisikan puluhan izin normal, masing-masing sesuai dengan fungsi sistem tertentu. Semuanya dapat diakses melalui konstanta kelas Manifest.permission. Berikut adalah daftar yang paling sering digunakan dalam pengembangan aplikasi.

KonstantaAksesDeskripsi
INTERNETJaringanMembuka soket jaringan untuk permintaan HTTP
ACCESS_NETWORK_STATEJaringanMemperoleh informasi tentang status jaringan
ACCESS_WIFI_STATEWi-FiMembaca informasi tentang koneksi Wi-Fi
VIBRATEGetaranMengontrol motor getaran perangkat
BLUETOOTHBluetoothTerhubung ke perangkat Bluetooth
WAKE_LOCKCatu dayaMencegah prosesor masuk ke mode tidur
SET_ALARMAlarmMengatur alarm melalui AlarmManager
CHANGE_NETWORK_STATEJaringanMengubah status koneksi jaringan

Grup izin normal

Izin normal tidak dikelompokkan dalam Permission Group untuk tujuan tampilan di UI. Grup di Android ditujukan untuk layar pengaturan, di mana hanya izin berbahaya yang ditampilkan. Namun secara logis, izin normal dapat dibagi ke dalam kategori: jaringan (INTERNET, ACCESS_NETWORK_STATE), perangkat keras (VIBRATE, WAKE_LOCK), sistem (SET_ALARM) dan izin Bluetooth.

Beberapa konstanta dari Manifest.permission dapat mengubah tingkat perlindungan pada versi Android yang berbeda. Misalnya, BLUETOOTH_CONNECT pada Android 12+ menjadi izin berbahaya dengan permintaan runtime, meskipun di versi yang lebih lama adalah normal. Pengembang disarankan untuk memeriksa protectionLevel saat ini untuk API target melalui dokumentasi.

Memeriksa Normal Permission melalui PackageManager

Pengembang dapat memeriksa secara terprogram apakah suatu izin normal melalui PackageManager. Metode getPermissionInfo mengembalikan PermissionInfo yang bidang protectionLevel-nya berisi bendera PermissionInfo.PROTECTION_NORMAL. Ini berguna untuk pemrosesan dinamis dan debugging.

kotlin
fun isNormalPermission(permission: String): Boolean {
    val pm = packageManager
    val info = pm.getPermissionInfo(
        permission,
        PackageManager.GET_META_DATA
    )
    return info.protectionLevel ==
        PermissionInfo.PROTECTION_NORMAL
}

Cara mendeklarasikan Normal Permission di manifes

Deklarasi Normal Permission di AndroidManifest.xml adalah operasi paling sederhana, hanya memerlukan satu tag uses-permission. Konfigurasi tambahan protectionLevel tidak diperlukan, karena tingkat perlindungan ditentukan oleh definisi sistem, bukan manifes aplikasi. Pengembang cukup mencantumkan nama lengkap konstanta.

xml
<!-- AndroidManifest.xml -->
<uses-permission
    android:name="android.permission.INTERNET" />
<uses-permission
    android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission
    android:name="android.permission.VIBRATE" />

Sistem saat pemasangan memproses semua deklarasi. Jika setidaknya salah satu izin yang disebutkan memiliki protectionLevel selain normal, permintaan runtime akan diperlukan. INTERNET — izin normal paling populer, hadir di sebagian besar aplikasi Android, terutama yang melakukan permintaan HTTP atau memuat konten dari jaringan.

Contoh manifes lengkap

Contoh lengkap AndroidManifest.xml dengan izin normal dan berbahaya menunjukkan perbedaannya: secara sintaksis, tag uses-permission identik, tetapi pada tahap eksekusi, INTERNET dan VIBRATE akan diberikan secara otomatis, sedangkan CAMERA memerlukan dialog.

xml
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- Normal permissions -->
    <uses-permission
        android:name="android.permission.INTERNET" />
    <uses-permission
        android:name="android.permission.VIBRATE" />

    <!-- Dangerous permission -->
    <uses-permission
        android:name="android.permission.CAMERA" />
</manifest>

Manifest Merger dan Normal Permission

Saat menggunakan pustaka — Google Play Services, Firebase, Glide — pustaka tersebut dapat menambahkan uses-permission sendiri ke manifes akhir melalui Manifest Merger. Beberapa di antaranya normal (INTERNET untuk Firebase), lainnya berbahaya (ACCESS_FINE_LOCATION untuk Google Maps). Pengembang harus memeriksa manifes gabungan akhir di build/outputs/logs/manifest-merger-report.txt sebelum publikasi.

Keterbatasan Normal Permission

Normal Permission memiliki dua keterbatasan mendasar: ketidakmungkinan pencabutan oleh pengguna dan tidak adanya UI untuk manajemen. Jika pengguna tidak mempercayai aplikasi, tetapi izin normal sudah diberikan secara otomatis — satu-satunya jalan keluar adalah menghapus aplikasi. Ini menciptakan risiko tertentu, karena izin normal tidak diblokir oleh alat standar Android.

Keterbatasan tambahan muncul pada perangkat dengan beberapa profil (Work Profile, Multiple Users). Normal Permission diberikan segera untuk semua profil — aplikasi tidak dapat membatasi izin hanya untuk satu. Dalam skenario perusahaan, ini diselesaikan melalui Managed Configurations.

Tidak mungkin untuk memeriksa apakah aplikasi menggunakan Normal Permission saat ini. Metode sistem checkSelfPermission hanya berfungsi untuk izin berbahaya. Untuk normal, metode ini selalu mengembalikan PERMISSION_GRANTED, yang tidak mencerminkan aktivitas nyata. Ini harus dipertimbangkan saat audit keamanan dan analisis perilaku aplikasi.

Juga perlu diingat bahwa beberapa produsen perangkat (Xiaomi, Huawei, Samsung) memodifikasi perilaku standar izin. Pada firmware mereka, Normal Permission mungkin memerlukan izin tambahan di shell khusus MIUI atau EMUI. Pengembang disarankan untuk menguji pada perangkat nyata dari berbagai vendor.

Pertanyaan yang Sering Diajukan

Apa perbedaan Normal Permission dengan Dangerous?

Normal Permission diberikan secara otomatis saat pemasangan tanpa dialog. Dangerous memerlukan permintaan runtime dengan persetujuan eksplisit pengguna dan dapat dicabut melalui pengaturan. Normal menggunakan ProtectionLevel normal, Dangerous — protectionLevel dangerous.

Apakah perlu menulis kode untuk Normal Permission?

Tidak, untuk izin normal cukup mendeklarasikan uses-permission di AndroidManifest.xml. Kode untuk permintaan tidak diperlukan — sistem memberikan akses secara otomatis. Ini membedakannya dari izin berbahaya yang memerlukan ActivityCompat.requestPermissions.

Normal Permission mana yang paling populer?

Yang paling sering digunakan: INTERNET (permintaan jaringan), ACCESS_NETWORK_STATE (pemeriksaan koneksi), VIBRATE (umpan balik taktil) dan WAKE_LOCK (menjaga prosesor tetap aktif). Hampir setiap aplikasi Android menggunakan setidaknya INTERNET.

Bisakah Normal Permission dicabut?

Tidak, Normal Permission tidak dapat dicabut melalui pengaturan aplikasi. Satu-satunya cara untuk menghentikan akses adalah menghapus aplikasi. Ini adalah perbedaan utama dari izin berbahaya yang dapat dimatikan pengguna kapan saja.

Bagaimana cara memeriksa ProtectionLevel suatu izin?

Gunakan PackageManager.getPermissionInfo, berikan nama string izin. Metode mengembalikan PermissionInfo dengan bidang protectionLevel. Bandingkan dengan konstanta PermissionInfo.PROTECTION_NORMAL atau PROTECTION_DANGEROUS untuk menentukan kategori.

Kesimpulan

  • Normal Permission — kategori izin Android dengan ProtectionLevel normal, diberikan secara otomatis saat pemasangan.
  • Untuk deklarasi, cukup tag uses-permission di AndroidManifest.xml tanpa kode runtime.
  • Berbeda dari izin berbahaya dengan tidak adanya dialog, ketidakmungkinan pencabutan, dan tingkat risiko rendah.
  • Paling populer: INTERNET, ACCESS_NETWORK_STATE, VIBRATE, ACCESS_WIFI_STATE dan WAKE_LOCK.
  • ProtectionLevel diperiksa melalui PackageManager.getPermissionInfo dalam kode.
  • Izin normal tidak ditampilkan di layar pengaturan aplikasi.
  • Saat menggunakan pustaka, periksa manifes akhir melalui Manifest Merger.

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga