Permission Group i Android — vad är det, tillståndsgrupper och funktionsprincip

Författare: IT Sectr Publicerad: 2026-05-20 Lästid: 8 min

Permission Group är en mekanism för gruppering av tillstånd i Android som kombinerar funktionellt relaterade farliga tillstånd till en logisk kategori. Enligt Android Permissions Overview, 2024, tillståndsgrupper förenklar användargränssnittet: om användaren har beviljat ett tillstånd från en grupp, beviljas de övriga automatiskt utan ytterligare dialogrutor. Detta minskar antalet förfrågningar och förbättrar UX.

Huvudpunkter

  • Permission Group — en kategori som kombinerar funktionellt relaterade farliga Android-tillstånd.
  • Beviljande av ett tillstånd från en grupp beviljar automatiskt alla andra utan ytterligare dialogruta.
  • Grupper används endast för dangerous-tillstånd — normal-tillstånd grupperas inte.
  • Systemgrupper: CAMERA, LOCATION, MICROPHONE, PHONE, CONTACTS, SMS, STORAGE, CALENDAR.
  • Grupper definieras i /etc/permissions/ på enheten och kan inte skapas av utvecklaren.

Vad är Permission Group i Android

Permission Group — är en systemmekanism i Android som kombinerar flera farliga tillstånd till en grupp baserat på deras funktionella ändamål. Varje grupp har en strängidentifierare, till exempel android.permission-group.CAMERA eller android.permission-group.LOCATION. Alla tillstånd inom en grupp är logiskt kopplade och ger tillgång till relaterade enhetsfunktioner.

Tillståndsgrupper uppstod i Android 6.0 Marshmallow tillsammans med runtime-förfrågningsmodellen. Deras huvudsyfte är att förenkla interaktionen med användaren: istället för en serie dialogrutor för varje enskilt tillstånd, visar systemet en dialogruta per grupp. Om användaren har beviljat ett tillstånd från en grupp, betraktas de övriga som automatiskt godkända. Enligt Android UX Research (2015) minskade detta antalet avslag vid första start med 20 procent.

Det är viktigt att förstå att utvecklaren inte kan skapa egna Permission Groups. Grupper är fördefinierade på operativsystemsnivå och beskrivs i permissions.xml-filer på varje enhet. Appen anger endast uses-permission, och systemet matchar automatiskt tillståndet med dess grupp baserat på protectionLevel och kategorisering i AOSP.

Hur systemet bestämmer gruppen

Matchningen av tillstånd till grupp sker via attributet permissionGroup i systemdefinitionen av tillståndet. Till exempel är CAMERA deklarerad med permissionGroup="android.permission-group.CAMERA", ACCESS_FINE_LOCATION — med permissionGroup="android.permission-group.LOCATION". Denna mappning är fast definierad i koden för Android Open Source Project och är densamma på alla certifierade enheter.

Hur fungerar Permission Group

Gruppmekanismen fungerar enligt principen ”en dialogruta per grupp”. När appen för första gången begär ett farligt tillstånd, kontrollerar systemet dess Permission Group. Om inget tillstånd från denna grupp ännu har beviljats — visas en dialogruta. Efter samtycke markerar systemet hela gruppen som beviljad, och efterföljande begäranden av andra tillstånd från samma grupp uppfylls utan användargränssnitt.

Algoritmen ser förenklat ut så här:

  • Appen anropar requestPermissions för ACCESS_FINE_LOCATION
  • Systemet bestämmer gruppen — android.permission-group.LOCATION
  • Kontrollerar om gruppen LOCATION tidigare har beviljats
  • Om inte — visar en dialogruta med gruppens namn och lista över ingående tillstånd
  • Efter Allow — betraktas hela LOCATION-gruppen som beviljad
  • ACCESS_COARSE_LOCATION är nu tillgänglig utan ytterligare begäran

Denna mekanism gäller endast farliga tillstånd. Normala tillstånd har inga grupper och deltar inte i denna logik. Privilegierade och signerade tillstånd grupperas inte heller — de har ett separat åtkomsthanteringssystem.

Begränsningar av grupplogiken

Grupper fungerar inte i omvänd riktning: att återkalla ett tillstånd från en grupp via inställningar återkallar endast det, utan att påverka de andra. Även om användaren har avvisat dialogrutan för en grupp, blockerar detta inte andra grupper — varje nytt tillstånd från en annan grupp visar sin egen dialogruta. Permission Group påverkar endast UX för begäran, inte säkerhetsmodellen.

Lista över Permission Group i Android

Android definierar följande system-Permission Groups för farliga tillstånd. Varje grupp omfattar ett eller flera tillstånd förenade av ett gemensamt funktionellt ändamål.

Grupp-IDTillstånd i gruppenBeskrivning
CAMERACAMERAÅtkomst till enhetens kamera
LOCATIONACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATIONGeolokalisering (exakt och ungefärlig)
MICROPHONERECORD_AUDIOLjudinspelning från mikrofonen
PHONEREAD_PHONE_STATE, CALL_PHONE, READ_CALL_LOG, WRITE_CALL_LOG, ADD_VOICEMAIL, USE_SIPTelefonfunktioner
CONTACTSREAD_CONTACTS, WRITE_CONTACTS, GET_ACCOUNTSÅtkomst till kontakter och konton
SMSREAD_SMS, SEND_SMS, RECEIVE_SMS, RECEIVE_WAP_PUSH, RECEIVE_MMSSkicka och ta emot SMS
STORAGEREAD_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGELäsa och skriva extern lagring
CALENDARREAD_CALENDAR, WRITE_CALENDARÅtkomst till kalendern
SENSORSBODY_SENSORSKroppssensorer (puls och andra)
ACTIVITY_RECOGNITIONACTIVITY_RECOGNITIONIgenkänning av fysisk aktivitet

Ändringar i nya versioner

I Android 13 (API 33) uppstod en ny grupp NEARBY_DEVICES, som kombinerar BLUETOOTH_SCAN, BLUETOOTH_CONNECT och BLUETOOTH_ADVERTISE. Även gruppen STORAGE har delvis ersatts av medietillstånden READ_MEDIA_IMAGES, READ_MEDIA_VIDEO och READ_MEDIA_AUDIO, som inte ingår i STORAGE, utan är oberoende farliga tillstånd utan gruppering.

Grupper för anpassade tillstånd

Utvecklare kan deklarera egna tillstånd med anpassade Permission Groups via attributet permissionGroup i manifestet. Detta fungerar dock endast för anpassade tillstånd i samma app och påverkar inte systemets UI-dialogrutor. I praktiken används anpassade Permission Groups sällan — för interaktion mellan egna appar i en stack.

Permission Group och UX

Permission Groups påverkan på användarupplevelsen är betydande. Tack vare gruppering ser användaren inte 8 separata dialogrutor för olika tillstånd, utan flera gruppdialogrutor. Detta minskar kognitiv belastning och minskar sannolikheten att användaren avvisar ett kritiskt tillstånd utan att förstå dess syfte.

UX-forskning visar att gruppdialogrutor uppfattas av användare som mer transparenta. När appen begär ”åtkomst till kameran” förstår användaren sammanhanget. Om varje tillstånd skulle begäras separat — CAMERA, CAMERA2, FLASHLIGHT — skulle detta skapa ett intryck av överflödighet. Permission Group abstraherar denna detaljering.

Bästa praxis är att begära tillstånd endast från en grupp åt gången. Om appen behöver både kamera och geolokalisering, begär dem inte med ett enda requestPermissions-anrop. Begär först en grupp efter förklaring, sedan den andra. Detta ger användaren kontroll och sekventiell förståelse av varje funktion.

Permission Group vs ProtectionLevel

Permission Group och ProtectionLevel — detta är två olika dimensioner av Android-tillståndssystemet. ProtectionLevel bestämmer hur tillståndet beviljas (normal, dangerous, signature, privileged), och Permission Group är en kategori för UI-visning. De är oberoende, men i praktiken är kombinationen dangerous + permission group vanligast.

Tillstånd av samma ProtectionLevel kan tillhöra olika grupper. Till exempel har ACCESS_FINE_LOCATION och CAMERA båda protectionLevel dangerous, men tillhör olika grupper — LOCATION och CAMERA. Och omvänt, tillstånd med samma namn tillhör alltid samma grupp: ACCESS_FINE_LOCATION och ACCESS_COARSE_LOCATION båda i LOCATION.

Högre skyddsnivåer — signature och privileged — använder inte Permission Group för UI. Deras beviljande kontrolleras på systemnivå: signature beviljas appar som är signerade med samma certifikat som systemet, och privileged beviljas appar i systemavbildningen. Grupper för sådana tillstånd finns, men påverkar inte UX-dialogrutor, eftersom dessa dialogrutor helt enkelt inte finns.

Kontrollera Permission Group i kod

Utvecklaren kan programmatiskt bestämma Permission Group för vilket tillstånd som helst via PackageManager. Metoden getPermissionInfo returnerar PermissionInfo med fältet group som innehåller gruppens strängidentifierare. Detta är användbart för loggning, analys och anpassade UI-skärmar för tillstånd.

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 }
}

Användning i DI och arkitektur

Kunskap om Permission Group hjälper till att bygga begäranarkitektur. Man kan skapa en abstraktion PermissionGroupProvider som returnerar listan över tillstånd för en specifik grupp. Detta förenklar testning: i enhetstester returnerar providern falsk data utan att anropa PackageManager. I instrumentella tester — riktiga grupper från systemet.

PermissionGroupProvider i DI

Integrering av PermissionGroupProvider via Dagger Hilt eller Koin möjliggör centraliserad hantering av mappningen av tillstånd och grupper. I providern kan resultatet av PackageManager.queryPermissionsByGroup cachas för att undvika upprepade systemanrop vid varje begäran. Detta är särskilt viktigt för inställnings-skärmar där hela listan över tillstånd och deras status visas.

Loggning och analys

Vid insamling av analys om avslag är det användbart att logga inte bara tillståndets namn utan också dess Permission Group. Detta hjälper till att identifiera funktionella områden som orsakar flest avslag. Till exempel har gruppen LOCATION traditionellt högsta andelen avslag — cirka 40 procent, enligt Google Play Console-statistik.

Analys per grupp hjälper till att fatta produktbeslut: om gruppen CONTACTS har en hög andel avslag kan det vara värt att ompröva begärantillfället eller lägga till en förklaringsdialogruta. Gruppbaserad ansats i analys ger en mer komplett bild än analys av enskilda tillstånd, eftersom antalet avslag för hela gruppen speglar användarnas allmänna attityd till det funktionella området.

Vanliga frågor

Vad är Permission Group i Android?

Permission Group — en mekanism för att kombinera funktionellt relaterade farliga tillstånd i en kategori. Om användaren har beviljat ett tillstånd från gruppen, beviljas de övriga automatiskt utan ytterligare dialogruta.

Hur många Permission Groups finns i Android?

I standard Android finns cirka 10 huvudgrupper: CAMERA, LOCATION, MICROPHONE, PHONE, CONTACTS, SMS, STORAGE, CALENDAR, SENSORS och ACTIVITY_RECOGNITION. I Android 13+ har NEARBY_DEVICES lagts till.

Kan en utvecklare skapa en egen Permission Group?

Ja, via attributet permissionGroup i AndroidManifest.xml för anpassade tillstånd. Men detta fungerar endast för tillstånd inom appen och påverkar inte systemets UI-dialogrutor. I praktiken används det sällan.

Hur påverkar gruppen återkallande av tillstånd?

Återkallande av ett tillstånd från en grupp återkallar inte de andra. Användaren kan inaktivera ACCESS_FINE_LOCATION, men ACCESS_COARSE_LOCATION förblir aktiv. Gruppen påverkar endast beviljande, inte återkallande.

Hur tar jag reda på gruppen för ett godtyckligt tillstånd?

Använd PackageManager.getPermissionInfo och läs fältet group. Metoden returnerar gruppens strängidentifierare, till exempel android.permission-group.CAMERA. Om tillståndet inte har någon grupp kommer fältet att vara null.

Sammanfattning

  • Permission Group — mekanism för gruppering av farliga Android-tillstånd för att förenkla UX.
  • Beviljande av ett tillstånd från en grupp garanterar automatiskt alla övriga i gruppen.
  • Systemgrupper: CAMERA, LOCATION, MICROPHONE, PHONE, CONTACTS, SMS, STORAGE, CALENDAR, SENSORS.
  • Grupper påverkar inte återkallande — återkallande av ett tillstånd påverkar inte andra i gruppen.
  • Anpassade grupper är endast möjliga för utvecklarens egna tillstånd.
  • Gruppen kan kontrolleras via PackageManager.getPermissionInfo och fältet group.
  • I Android 13+ har gruppen NEARBY_DEVICES lagts till för Bluetooth- och Wi-Fi-tillstånd.

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också