Android-da Normal Permission — bu nima, himoya darajalari va ishlash prinsipi

Muallif: IT Sectr Nashr etilgan: 2026-05-20 O'qish vaqti: 8 daq

Normal Permission — Android-da tizim foydalanuvchidan so'ramasdan avtomatik ravishda taqdim etadigan ruxsatlar toifasidir. Android Developer Documentation, 2024 ma'lumotlariga ko'ra, normal ruxsatlar ProtectionLevel normal ga ega va xavfli ruxsatlardan farqli o'laroq, runtime dialogni talab qilmaydi. Ular internetga, tarmoq holatiga va tebranishga kirishni o'z ichiga oladi, foydalanuvchining maxfiy ma'lumotlari uchun xavf tug'dirmaydi.

Asosiy

  • Normal Permission — ProtectionLevel normal bo'lgan, o'rnatish vaqtida avtomatik taqdim etiladigan Android ruxsatlari toifasi.
  • Foydalanish uchun manifestga uses-permission qo'shish kifoya — foydalanuvchiga dialog ko'rsatilmaydi.
  • Xavfli ruxsatlardan asosiy farqi — runtime so'rovining yo'qligi va sozlamalar orqali bekor qilishning imkonsizligi.
  • Ro'yxat INTERNET, ACCESS_NETWORK_STATE, VIBRATE, ACCESS_WIFI_STATE va boshqa tizim konstantalarini o'z ichiga oladi.
  • Himoya darajasini dastur kodida PackageManager.getPermissionInfo orqali tekshirish mumkin.

Android-da Normal Permission nima

Normal Permission — ProtectionLevel normal bo'lgan Android tizim ruxsatlarining bir turi bo'lib, dasturga o'rnatish vaqtida avtomatik ravishda beriladi. Ishlab chiqaruvchi so'rov uchun kod yozishi shart emas — AndroidManifest.xml da ruxsatni ko'rsatish kifoya. Foydalanuvchi dialoglarni ko'rmaydi va normal permissionni alohida bekor qila olmaydi, faqat dasturni butunlay o'chirish orqali.

Android tizimi normal ruxsatlarni past xavfli deb tasniflaydi — ular shaxsiy ma'lumotlarga, kameraga yoki mikrofonga kirishni bermaydi. Oddiy misollar: internetga kirish, tebranishni boshqarish, Wi-Fi holatini o'qish. Android Security Model (2024) ma'lumotlariga ko'ra, barcha tizim ruxsatlarining taxminan 40 foizi normal toifasiga kiradi.

Muhim xususiyat — normal ruxsatlar Settings orqali runtime da bekor qilinmaydi. Agar foydalanuvchi kirishni taqiqlamoqchi bo'lsa, yagona yo'l dasturni o'chirishdir. Ishlab chiqaruvchilar buni arxitekturada hisobga olishlari kerak, ammo foydalanuvchilar uchun bunday yondashuv o'zaro ta'sirni soddalashtiradi: birinchi ishga tushirishda hech qanday dialoglar yo'q.

Toifaning paydo bo'lish tarixi

Normal va xavfli ruxsatlarga bo'linish Android 6.0 Marshmallow (API 23) da paydo bo'ldi. Ushbu versiyadan oldin barcha ruxsatlar o'rnatish vaqtida so'ralardi — foydalanuvchi yagona ro'yxatni ko'rar va uni to'liq qabul qilar yoki rad etardi. Normal Permission ushbu modelni past xavfli operatsiyalar uchun saqlab qoldi, Dangerous esa runtime so'roviga o'tdi. Bu o'zgarish foydalanuvchi tajribasini yaxshiladi va bir vaqtning o'zida xavfsizlikni oshirdi.

Qaysi API lar Normal Permission talab qiladi

Ko'plab Android tizim API lari, kirish avtomatik bo'lsa ham, normal ruxsatni aniq ko'rsatishni talab qiladi. Masalan, ConnectivityManager sinfi ACCESS_NETWORK_STATE, VibratorService VIBRATE, WifiManager ACCESS_WIFI_STATE talab qiladi. Tegishli uses-permission e'lon qilinmasdan, ushbu API larni chaqirish SecurityException ga olib keladi.

ProtectionLevel normal qanday ishlaydi

ProtectionLevel normal — Android Permission System dagi minimal himoya darajasi. Ushbu darajadagi ruxsatlar manifestda e'lon qilinadi va tizim o'rnatish vaqtida deklaratsiyani tekshiradi, foydalanuvchi aralashuvisiz kirishni taqdim etadi. Hech qanday UI elementi ko'rsatilmaydi, hech qanday callback chaqirilmaydi.

Tekshirish mexanizmi PackageManager darajasida ishlaydi. APK o'rnatilayotganda, tizim barcha uses-permission teglarini skanerdan o'tkazadi, permissions.xml fayllaridagi tizim ta'riflari bilan solishtirib har bir ruxsatning himoya darajasini aniqlaydi va normal-level uchun oddiygina kirishni ro'yxatga oladi. Jarayon millisekundlar davom etadi va foydalanuvchi interfeysi bilan o'zaro ta'sirni talab qilmaydi.

Taqdim etish algoritmi quyidagicha:

  • Tizim dasturni o'rnatish vaqtida manifestni o'qiydi
  • Qurilmadagi /etc/permissions/ da protectionLevel ni solishtiradi
  • normal qiymatida — avtomatik ravishda kirishni beradi
  • Ruxsat dastur to'liq o'chirilgunga qadar faol qoladi

Foydalanuvchi interfeys orqali normal ruxsatni bekor qila olmaydi. Dastur sozlamalarida Ruxsatlar bo'limida faqat xavfli ruxsatlar ko'rsatiladi. Bu iOS bilan farq qiladi, u erda har bir ruxsat funksiyaning sezgirlik darajasidan qat'i nazar, alohida tasdiqlashni talab qiladi.

Normal Permission vs Dangerous Permission

Normal va Dangerous Permission — Android da ikkita qarama-qarshi himoya toifasi. Asosiy farq taqdim etish usulida: normal ruxsatlar o'rnatish vaqtida avtomatik beriladi, xavfli ruxsatlar runtime dialog orqali aniq rozilik talab qiladi. Bu farq Android 6.0 Marshmallow versiyasidan boshlab xavfsizlik arxitekturasiga kiritilgan.

Asosiy xususiyatlarni taqqoslash:

XususiyatNormal PermissionDangerous Permission
ProtectionLevelnormaldangerous
Foydalanuvchi so'roviTalab qilinmaydiRuntime dialog majburiy
Bekor qilish imkoniyatiYo'q, faqat dasturni o'chirishHa, istalgan vaqtda sozlamalar orqali
Kodda tekshirishHar doim PERMISSION_GRANTEDcheckSelfPermission majburiy
MisollarINTERNET, VIBRATE, ACCESS_NETWORK_STATECAMERA, RECORD_AUDIO, ACCESS_FINE_LOCATION

Foydalanuvchi so'rovidagi farq

Foydalanuvchi Normal Permission so'rovida hech qanday dialogni ko'rmaydi. Agar dasturga INTERNET kerak bo'lsa — uni jimgina oladi. Dangerous Permission uchun tizim so'ralgan kirish tavsifi bilan modal dialog ko'rsatadi. Foydalanuvchi Allow yoki Deny tugmasini bosadi va keyinroq istalgan vaqtda Settings orqali ruxsatni bekor qilishi mumkin. Bu interfeysni ishlab chiqish strategiyasini belgilaydigan asosiy UX farqidir.

Qachon Normal ni tanlash kerak

Normal kirish sezgir ma'lumotlarga tegishli bo'lmagan barcha holatlarda qo'llanilishi kerak. ACCESS_NETWORK_STATE ulanishni tekshirish uchun, VIBRATE tebranish aloqasi uchun, INTERNET HTTP so'rovlari uchun — bularning barchasi normal ruxsatlardir. Normal etarli bo'lgan joyda dangerous darajasini qo'llash yomon amaliyot bo'lib, keraksiz dialoglar yaratadi va foydalanuvchining dasturga bo'lgan ishonchini kamaytiradi.

Android-da normal ruxsatlar ro'yxati

Android belgilaydi o'nlab normal ruxsatlar, har biri ma'lum bir tizim funksiyasiga mos keladi. Ularning barchasi Manifest.permission sinfi konstantalari orqali mavjud. Quyida dastur ishlab chiqishda eng ko'p qo'llaniladiganlar ro'yxati keltirilgan.

KonstantaKirishTa'rif
INTERNETTarmoqHTTP so'rovlari uchun tarmoq soketlarini ochish
ACCESS_NETWORK_STATETarmoqTarmoq holati haqida ma'lumot olish
ACCESS_WIFI_STATEWi-FiWi-Fi ulanishlari haqida ma'lumot o'qish
VIBRATETebranishQurilma vibratorini boshqarish
BLUETOOTHBluetoothBluetooth qurilmalariga ulanish
WAKE_LOCKQuvvatProtsessorning uyquga o'tishini bloklash
SET_ALARMBudilnikAlarmManager orqali budilnik o'rnatish
CHANGE_NETWORK_STATETarmoqTarmoq ulanish holatini o'zgartirish

Normal ruxsatlar guruhlari

Normal ruxsatlar UI da ko'rsatish uchun Permission Group da guruhlanmaydi. Android dagi guruhlar sozlamalar ekrani uchun mo'ljallangan bo'lib, unda faqat xavfli ruxsatlar ko'rsatiladi. Biroq, mantiqan normal ruxsatlarni toifalarga bo'lish mumkin: tarmoq (INTERNET, ACCESS_NETWORK_STATE), apparat (VIBRATE, WAKE_LOCK), tizim (SET_ALARM) va Bluetooth ruxsatlari.

Manifest.permission dan ba'zi konstantalar turli Android versiyalarida himoya darajasini o'zgartirishi mumkin. Masalan, BLUETOOTH_CONNECT Android 12+ da runtime so'rovi bilan xavfli ruxsatga aylandi, garchi eski versiyalarda normal bo'lsa ham. Ishlab chiqaruvchilarga maqsadli API uchun hujjatlar orqali joriy protectionLevel ni tekshirish tavsiya etiladi.

PackageManager orqali Normal Permission ni tekshirish

Ishlab chiqaruvchi dasturiy ravishda PackageManager orqali ruxsatning normal ekanligini tekshirishi mumkin. getPermissionInfo metodi protectionLevel maydonida PermissionInfo.PROTECTION_NORMAL bayrog'ini o'z ichiga olgan PermissionInfo qaytaradi. Bu dinamik ishlov berish va tuzatish uchun foydalidir.

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

Manifestda Normal Permission qanday e'lon qilinadi

Normal Permission ni e'lon qilish AndroidManifest.xml da bitta uses-permission tegini talab qiladigan eng oddiy operatsiyadir. Qo'shimcha protectionLevel konfiguratsiyasi talab qilinmaydi, chunki himoya darajasi dastur manifesti bilan emas, balki tizim ta'rifi bilan belgilanadi. Ishlab chiqaruvchi oddiygina konstanta to'liq nomini ko'rsatadi.

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" />

Tizim o'rnatish vaqtida barcha deklaratsiyalarni qayta ishlaydi. Agar ko'rsatilgan ruxsatlardan kamida bittasi normal dan farqli protectionLevel ga ega bo'lsa, runtime so'rovi talab qilinadi. INTERNET — eng mashhur normal ruxsat, ayniqsa HTTP so'rovlarini bajaradigan yoki tarmoqdan kontent yuklaydigan ko'pgina Android dasturlarida mavjud.

To'liq manifest namunasi

Normal va xavfli ruxsatlarga ega to'liq AndroidManifest.xml namunasi farqni ko'rsatadi: sintaktik jihatdan uses-permission teglari bir xil, ammo bajarish bosqichida INTERNET va VIBRATE avtomatik taqdim etiladi, CAMERA esa dialog talab qiladi.

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 va Normal Permission

Kutubxonalardan — Google Play Services, Firebase, Glide — foydalanganda ular Manifest Merger orqali yakuniy manifestga o'z uses-permission teglarini qo'shishi mumkin. Ulardan ba'zilari normal (Firebase uchun INTERNET), boshqalari xavfli (Google Maps uchun ACCESS_FINE_LOCATION). Ishlab chiqaruvchi nashr qilishdan oldin build/outputs/logs/manifest-merger-report.txt faylida yakuniy birlashtirilgan manifestni tekshirishi kerak.

Normal Permission cheklovlari

Normal Permission ikkita asosiy cheklovga ega: foydalanuvchi tomonidan bekor qilinmasligi va boshqaruv uchun UI ning yo'qligi. Agar foydalanuvchi dasturga ishonmasa, lekin normal ruxsat allaqachon avtomatik berilgan bo'lsa — yagona chiqish yo'li dasturni o'chirishdir. Bu ma'lum xavf tug'diradi, chunki normal ruxsatlar Android standart vositalari bilan bloklanmaydi.

Qo'shimcha cheklov bir nechta profilli qurilmalarda (Work Profile, Multiple Users) namoyon bo'ladi. Normal Permission barcha profillar uchun darhol taqdim etiladi — dastur ruxsatni faqat bittasi bilan cheklay olmaydi. Korporativ stsenariylarda bu Managed Configurations orqali hal qilinadi.

Dastur hozirda Normal Permission dan foydalanayotganligini tekshirish mumkin emas. Tizim metodi checkSelfPermission faqat xavfli ruxsatlar uchun ishlaydi. Normal uchun u har doim PERMISSION_GRANTED qaytaradi, bu real faoliyatni aks ettirmaydi. Buni xavfsizlik auditi va dastur harakatini tahlil qilishda hisobga olish kerak.

Shuningdek, ba'zi qurilma ishlab chiqaruvchilari (Xiaomi, Huawei, Samsung) ruxsatlarning standart xatti-harakatini o'zgartirishini yodda tutish kerak. Ularning proshivkalarida Normal Permission MIUI yoki EMUI markali qobig'ida qo'shimcha ruxsatlarni talab qilishi mumkin. Ishlab chiqaruvchilarga turli ishlab chiqaruvchilarning real qurilmalarida ishlashni sinab ko'rish tavsiya etiladi.

Tez-tez beriladigan savollar

Normal Permission Dangerous dan qanday farq qiladi?

Normal Permission o'rnatish vaqtida dialogsiz avtomatik taqdim etiladi. Dangerous foydalanuvchining aniq roziligi bilan runtime so'rovini talab qiladi va sozlamalar orqali bekor qilinishi mumkin. Normal ProtectionLevel normal, Dangerous esa protectionLevel dangerous dan foydalanadi.

Normal Permission uchun kod yozish kerakmi?

Yo'q, normal ruxsatlar uchun AndroidManifest.xml da uses-permission e'lon qilish kifoya. So'rov uchun kod talab qilinmaydi — tizim kirishni avtomatik taqdim etadi. Bu ActivityCompat.requestPermissions talab qiladigan xavfli ruxsatlardan farq qiladi.

Qaysi Normal Permission eng mashhur?

Eng ko'p qo'llaniladiganlar: INTERNET (tarmoq so'rovlari), ACCESS_NETWORK_STATE (ulanishni tekshirish), VIBRATE (tebranish aloqasi) va WAKE_LOCK (protsessorni ushlab turish). Deyarli har bir Android dasturi kamida INTERNET dan foydalanadi.

Normal Permission bekor qilinishi mumkinmi?

Yo'q, Normal Permission dastur sozlamalari orqali bekor qilinmaydi. Kirishni to'xtatishning yagona yo'li dasturni o'chirishdir. Bu foydalanuvchi istalgan vaqtda o'chirib qo'yishi mumkin bo'lgan xavfli ruxsatlardan asosiy farqdir.

Ruxsatning ProtectionLevel ini qanday tekshirish mumkin?

PackageManager.getPermissionInfo dan foydalaning, ruxsatning satr nomini uzating. Metod protectionLevel maydoni bilan PermissionInfo qaytaradi. Toifani aniqlash uchun PermissionInfo.PROTECTION_NORMAL yoki PROTECTION_DANGEROUS konstantalari bilan solishtiring.

Xulosa

  • Normal Permission — ProtectionLevel normal bo'lgan, o'rnatish vaqtida avtomatik beriladigan Android ruxsatlari toifasi.
  • E'lon qilish uchun AndroidManifest.xml da runtime kodsiz uses-permission tegi kifoya.
  • Xavfli ruxsatlardan dialog yo'qligi, bekor qilish imkoniyati yo'qligi va past xavf darajasi bilan farq qiladi.
  • Eng mashhurlari: INTERNET, ACCESS_NETWORK_STATE, VIBRATE, ACCESS_WIFI_STATE va WAKE_LOCK.
  • ProtectionLevel kodda PackageManager.getPermissionInfo orqali tekshiriladi.
  • Normal ruxsatlar dastur sozlamalari ekranida ko'rsatilmaydi.
  • Kutubxonalardan foydalanganda Manifest Merger orqali yakuniy manifestni tekshirish kerak.

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing