Android-da Permission Group — bu nima, ruxsat guruhlari va ishlash prinsipi

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

Permission Group — bu Android-da ruxsatlarni guruhlash mexanizmi boʻib, funksional jihatdan bogʻlangan xavfli ruxsatlarni bitta mantiqiy kategoriyaga birlashtiradi. Android Permissions Overview, 2024 maʻlumotlariga koʻra, ruxsat guruhlari foydalanuvchi interfeysini soddalashtiradi: agar foydalanuvchi guruhdan bitta ruxsat bergan boʻlsa, qolganlari qoʻshimcha dialoglarsiz avtomatik beriladi. Bu soʻrovlar sonini kamaytiradi va UX-ni yaxshilaydi.

Asosiy nuqtalar

  • Permission Group — funksional bogʻlangan xavfli Android ruxsatlarini birlashtiruvchi kategoriya.
  • Guruhdan bitta ruxsat berilishi avtomatik ravishda qolgan barchasini qoʻshimcha dialogsiz taʻminlaydi.
  • Guruhlar faqat dangerous ruxsatlar uchun ishlatiladi — normal ruxsatlar guruhlanmaydi.
  • Tizim guruhlari: CAMERA, LOCATION, MICROPHONE, PHONE, CONTACTS, SMS, STORAGE, CALENDAR.
  • Guruhlar qurilmadagi /etc/permissions/ fayllarida belgilanadi va dasturchi tomonidan yaratilmaydi.

Android-da Permission Group nima

Permission Group — bu Android tizim mexanizmi boʻib, bir nechta xavfli ruxsatlarni funksional maqsadiga koʻra bitta guruhga birlashtiradi. Har bir guruhning satr identifikatori bor, masalan android.permission-group.CAMERA yoki android.permission-group.LOCATION. Bitta guruh ichidagi barcha ruxsatlar mantiqiy bogʻlangan va qurilmaning oʻxshash funksiyalariga kirishni taʻminlaydi.

Ruxsat guruhlari Android 6.0 Marshmallow bilan runtime soʻrov modeli bilan birga paydo boʻldi. Ularning asosiy maqsadi foydalanuvchi bilan oʻzaro aloqani soddalashtirish: har bir alohida ruxsat uchun bir qator dialoglar oʻrniga, tizim har bir guruh uchun bitta dialog koʻrsatadi. Agar foydalanuvchi guruhdan bitta ruxsat bergan boʻlsa, qolganlari avtomatik tasdiqlangan hisoblanadi. Android UX Research (2015) maʻlumotlariga koʻra, bu birinchi ishga tushirishdagi rad etishlar sonini 20 foizga kamaytirgan.

Dasturchi oʻzining Permission Group-larini yarata olmasligini tushunish muhim. Guruhlar operatsion tizim darajasida oldindan belgilanadi va har bir qurilmadagi permissions.xml fayllarida tavsiflanadi. Dastur faqat uses-permission ni koʻrsatadi, tizim esa protectionLevel va AOSP dagi kategoriyalashtirishga asoslanib ruxsatni avtomatik ravishda uning guruhi bilan bogʻlaydi.

Tizim guruhni qanday aniqlaydi

Ruxsatning guruh bilan bogʻlanishi tizim ruxsat taʻrifidagi permissionGroup atributi orqali amalga oshiriladi. Masalan, CAMERA permissionGroup="android.permission-group.CAMERA" bilan, ACCESS_FINE_LOCATION esa permissionGroup="android.permission-group.LOCATION" bilan eʻlon qilingan. Bu xaritalash Android Open Source Project kodida qattiq belgilangan va barcha sertifikatlangan qurilmalarda bir xil.

Permission Group qanday ishlaydi

Guruh mexanizmi “harbir guruh uchun bitta dialog” prinsipi bilan ishlaydi. Dastur birinchi marta har qanday xavfli ruxsatni soʻraganda, tizim uning Permission Group-ni tekshiradi. Agar bu guruhdan hali hech qanday ruxsat berilmagan boʻlsa — dialog koʻrsatiladi. Rozilikdan soʻng, tizim butun guruhni berilgan deb belgilaydi va shu guruhdagi boshqa ruxsatlarning keyingi soʻrovlari foydalanuvchi interfeysisiz qondiriladi.

Algoritm soddalashtirilgan holda quyidagicha koʻrinadi:

  • Dastur ACCESS_FINE_LOCATION uchun requestPermissions ni chaqiradi
  • Tizim guruhni aniqlaydi — android.permission-group.LOCATION
  • LOCATION guruhi avval berilganligini tekshiradi
  • Agar berilmagan boʻlsa — guruh nomi va kiritilgan ruxsatlar roʻyxati bilan dialog koʻrsatadi
  • Allow dan soʻng — butun LOCATION guruhi berilgan deb hisoblanadi
  • ACCESS_COARSE_LOCATION endi qoʻshimcha soʻrovsiz mavjud

Bu mexanizm faqat xavfli ruxsatlarga taalluqli. Oddiy ruxsatlarning guruhlari yoʻq va bu mantiqda qatnashmaydi. Imtiyozli va imzolangan ruxsatlar ham guruhlanmaydi — ularning alohida kirish boshqaruv tizimi bor.

Guruh mantiqining cheklovlari

Guruhlar “teskari yoʻnalishda” ishlamaydi: sozlamalar orqali guruhdan bitta ruxsatni qaytarib olish faqat uni qaytarib oladi, qolganlariga taʻsir qilmaydi. Shuningdek, agar foydalanuvchi guruh uchun dialogni rad etgan boʻlsa, bu boshqa guruhlarni bloklamaydi — boshqa guruhdagi har bir yangi ruxsat oʻzining dialogini koʻrsatadi. Permission Group faqat soʻrovning UX-iga taʻsir qiladi, xavfsizlik modeliga emas.

Android-da Permission Group roʻyxati

Android belgilaydi xavfli ruxsatlar uchun quyidagi tizim Permission Group-larini. Har bir guruh umumiy funksional maqsad bilan birlashtirilgan bir yoki bir nechta ruxsatni oʻz ichiga oladi.

Guruh identifikatoriGuruhdagi ruxsatlarTavsif
CAMERACAMERAQurilma kamerasiga kirish
LOCATIONACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATIONGeolokatsiya (aniq va taxminiy)
MICROPHONERECORD_AUDIOMikrofondan ovoz yozish
PHONEREAD_PHONE_STATE, CALL_PHONE, READ_CALL_LOG, WRITE_CALL_LOG, ADD_VOICEMAIL, USE_SIPTelefon funksiyalari
CONTACTSREAD_CONTACTS, WRITE_CONTACTS, GET_ACCOUNTSKontaktlar va hisoblarga kirish
SMSREAD_SMS, SEND_SMS, RECEIVE_SMS, RECEIVE_WAP_PUSH, RECEIVE_MMSSMS yuborish va qabul qilish
STORAGEREAD_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGETashqi xotirani oʻqish va yozish
CALENDARREAD_CALENDAR, WRITE_CALENDARTaqvimga kirish
SENSORSBODY_SENSORSTana sensorlari (yurak urishi va boshqalar)
ACTIVITY_RECOGNITIONACTIVITY_RECOGNITIONJismoniy faollikni aniqlash

Yangi versiyalardagi oʻzgarishlar

Android 13 (API 33) da BLUETOOTH_SCAN, BLUETOOTH_CONNECT va BLUETOOTH_ADVERTISE ni birlashtiruvchi yangi NEARBY_DEVICES guruhi paydo boʻldi. Shuningdek, STORAGE guruhi qisman READ_MEDIA_IMAGES, READ_MEDIA_VIDEO va READ_MEDIA_AUDIO media ruxsatlari bilan almashtirildi, ular STORAGE tarkibiga kirmaydi, balki guruhlashsiz mustaqil xavfli ruxsatlardir.

Maxsus ruxsatlar uchun guruhlar

Dasturchilar manifestdagi permissionGroup atributi orqali maxsus Permission Group-lar bilan oʻz ruxsatlarini eʻlon qilishlari mumkin. Biroq bu faqat shu dasturning maxsus ruxsatlari uchun ishlaydi va tizim UI dialoglariga taʻsir qilmaydi. Amalda maxsus Permission Group-lar kamdan-kam ishlatiladi — bitta stekda oʻz dasturlari orasidagi oʻzaro aloqa uchun.

Permission Group va UX

Permission Group-ning taʻsiri foydalanuvchi tajribasiga sezilarli. Guruhlash tufayli foydalanuvchi turli ruxsatlar uchun 8 ta alohida dialog emas, balki bir nechta guruh dialoglarini koʻradi. Bu kognitiv yukni kamaytiradi va foydalanuvchining maqsadini tushunmay muhim ruxsatni rad etish ehtimolini pasaytiradi.

UX tadqiqotlari shuni koʻrsatadiki, guruh dialoglari foydalanuvchilar tomonidan shaffofroq qabul qilinadi. Dastur „kameraga kirish” ni soʻraganda, foydalanuvchi kontekstni tushunadi. Agar har bir ruxsat alohida soʻralganda edi — CAMERA, CAMERA2, FLASHLIGHT — bu ortiqchalik taassurotini yaratgan boʻlardi. Permission Group bu detalni abstraksiya qiladi.

Eng yaxshi amaliyot — ruxsatlarni faqat bir guruhdan bir martada soʻrashdir. Agar dasturga ham kamera, ham geolokatsiya kerak boʻlsa, ularni bitta requestPermissions chaqiruvi bilan soʻramang. Avval bir guruhni tushuntirishdan keyin soʻrang, keyin ikkinchisini. Bu foydalanuvchiga nazorat va har bir funksiyaning ketma-ket tushunilishini beradi.

Permission Group vs ProtectionLevel

Permission Group va ProtectionLevel — bu Android ruxsat tizimining ikki xil oʻlchovidir. ProtectionLevel ruxsatning qanday berilishini belgilaydi (normal, dangerous, signature, privileged), Permission Group esa UI koʻrsatuvi uchun kategoriyadir. Ular mustaqil, ammo amalda dangerous + permission group kombinatsiyasi eng koʻp uchraydi.

Bir xil ProtectionLevel-dagi ruxsatlar turli guruhlarga tegishli boʻlishi mumkin. Masalan, ACCESS_FINE_LOCATION va CAMERA ikkalasi ham protectionLevel dangerous ga ega, ammo turli guruhlarga — LOCATION va CAMERA ga tegishli. Va aksincha, bir xil nomli ruxsatlar doim bir guruhga tegishli: ACCESS_FINE_LOCATION va ACCESS_COARSE_LOCATION ikkalasi LOCATION da.

Yuqori darajadagi himoya sathlari — signature va privileged — UI uchun Permission Group dan foydalanmaydi. Ularning berilishi tizim darajasida boshqariladi: signature tizim bilan bir xil sertifikat bilan imzolangan dasturlarga, privileged esa tizim tasviridagi dasturlarga beriladi. Bunday ruxsatlar uchun guruhlar mavjud, ammo UX dialoglariga taʻsir qilmaydi, chunki bunday dialoglar mavjud emas.

Kodda Permission Group-ni tekshirish

Dasturchi dasturiy ravishda PackageManager orqali istalgan ruxsatning Permission Group-ni aniqlashi mumkin. getPermissionInfo metodi guruhning satr identifikatorini oʻz ichiga olgan group maydoni bilan PermissionInfo qaytaradi. Bu loglash, analitika va maxsus ruxsat UI ekranlari uchun foydali.

kotlin
fun getPermissionGroupName(
    permission: String
): String? {
    return try {
        val pm = packageManager
        val info = pm.getPermissionInfo(
            permission,
            PackageManager.GET_META_DATA
        )
        info.group
    } catch (e: NameNotFoundException) {
        null
    }
}

fun getPermissionsByGroup(
    group: String
): List<String> {
    val pm = packageManager
    val perms = pm.queryPermissionsByGroup(
        group,
        PackageManager.GET_META_DATA
    )
    return perms.map { it.name }
}

DI va arxitekturada foydalanish

Permission Group-ni bilish soʻrov arxitekturasini qurishga yordam beradi. Muayyan guruh uchun ruxsatlar roʻyxatini qaytaradigan PermissionGroupProvider abstraksiyasini yaratish mumkin. Bu testlashni soddalashtiradi: birlik testlarida provider PackageManager ga murojaat qilmasdan soxta maʻlumotlar qaytaradi. Instrumental testlarda — tizimdan real guruhlar.

DI da PermissionGroupProvider

PermissionGroupProvider ni Dagger Hilt yoki Koin orqali integratsiya qilish ruxsatlar va guruhlar xaritalashini markazlashtirilgan boshqarishga imkon beradi. Providerda PackageManager.queryPermissionsByGroup natijasini keshlash mumkin, har bir soʻrovda takroriy tizim chaqiruvlarini oldini olish uchun. Bu, ayniqsa, barcha ruxsatlar va ularning holati koʻrsatiladigan sozlamalar ekranlari uchun muhim.

Loglash va analitika

Rad etishlar haqida analitika yigʻishda nafaqat ruxsat nomini, balki uning Permission Group-ni ham loglash foydali. Bu eng koʻp rad etishga sabab boʻladigan funksional sohalarni aniqlashga yordam beradi. Masalan, LOCATION guruhi anʻanaviy ravishda eng yuqori rad etish foiziga ega — Google Play Console statistikasiga koʻra taxminan 40 foiz.

Guruhlar boʻyicha analitika mahsulot qarorlarini qabul qilishga yordam beradi: agar CONTACTS guruhi yuqori rad etish foiziga ega boʻlsa, soʻrov vaqtini qayta koʻrib chiqish yoki tushuntirish dialogi qoʻshish kerak boʻlishi mumkin. Analitikaga guruh yondashuvi alohida ruxsatlar tahlilidan koʻra toʻlaroq rasm beradi, chunki butun guruh boʻyicha rad etishlar soni foydalanuvchilarning funksional sohaga umumiy munosabatini aks ettiradi.

Tez-tez beriladigan savollar

Android-da Permission Group nima?

Permission Group — funksional bogʻlangan xavfli ruxsatlarni bitta kategoriyada birlashtiruvchi mexanizm. Agar foydalanuvchi guruhdan bitta ruxsat bergan boʻlsa, qolganlari qoʻshimcha dialogsiz avtomatik beriladi.

Android-da nechta Permission Group bor?

Standart Android-da taxminan 10 ta asosiy guruh bor: CAMERA, LOCATION, MICROPHONE, PHONE, CONTACTS, SMS, STORAGE, CALENDAR, SENSORS va ACTIVITY_RECOGNITION. Android 13+ da NEARBY_DEVICES qoʻshilgan.

Dasturchi oʻzining Permission Group-ni yarata oladimi?

Ha, maxsus ruxsatlar uchun AndroidManifest.xml dagi permissionGroup atributi orqali. Lekin bu faqat dastur ichidagi ruxsatlar uchun ishlaydi va tizim UI dialoglariga taʻsir qilmaydi. Amalda kamdan-kam ishlatiladi.

Guruh ruxsatlarni qaytarib olishga qanday taʻsir qiladi?

Guruhdan bitta ruxsatni qaytarib olish qolganlarini qaytarib olmaydi. Foydalanuvchi ACCESS_FINE_LOCATION ni oʻchirishi mumkin, ammo ACCESS_COARSE_LOCATION faol qoladi. Guruh faqat berishga taʻsir qiladi, qaytarib olishga emas.

Ixtiyoriy ruxsatning guruhini qanday bilish mumkin?

PackageManager.getPermissionInfo dan foydalaning va group maydonini oʻqing. Metod guruhning satr identifikatorini qaytaradi, masalan android.permission-group.CAMERA. Agar ruxsatning guruhi boʻlmasa, maydon null boʻladi.

Xulosa

  • Permission Group — UX-ni soddalashtirish uchun xavfli Android ruxsatlarini guruhlash mexanizmi.
  • Guruhdan bitta ruxsat berilishi avtomatik ravishda guruhdagi barcha qolganlarini taʻminlaydi.
  • Tizim guruhlari: CAMERA, LOCATION, MICROPHONE, PHONE, CONTACTS, SMS, STORAGE, CALENDAR, SENSORS.
  • Guruhlar qaytarib olishga taʻsir qilmaydi — bitta ruxsatni qaytarib olish guruhdagi boshqalarga taʻsir qilmaydi.
  • Maxsus guruhlar faqat dasturchining oʻz ruxsatlari uchun mumkin.
  • Guruhni PackageManager.getPermissionInfo va group maydoni orqali tekshirish mumkin.
  • Android 13+ da Bluetooth va Wi-Fi ruxsatlari uchun NEARBY_DEVICES guruhi paydo boʻldi.

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