Normal Permission Androidban — mi ez, védelmi szintek és működési elv

Szerző: IT Sectr Megjelenés: 2026-05-20 Olvasási idő: 8 perc

Normal Permission — az Android engedélyek egy kategóriája, amelyeket a rendszer automatikusan biztosít a felhasználó megkérdezése nélkül. A Android Developer Documentation, 2024 szerint a normál engedélyek ProtectionLevel normal értékkel rendelkeznek, és a veszélyesektől eltérően nem igényelnek runtime párbeszédablakot. Lefedik az internethez, a hálózati állapothoz és a rezgéshez való hozzáférést anélkül, hogy kockázatot jelentenének a felhasználó bizalmas adataira.

Főbb pontok

  • Normal Permission — az Android-engedélyek kategóriája ProtectionLevel normal értékkel, automatikusan biztosítva telepítéskor.
  • A használathoz elég hozzáadni a uses-permission elemet a manifestben — a párbeszédablak nem jelenik meg a felhasználónak.
  • A fő különbség a veszélyesektől — a runtime kérelem hiánya és a visszavonás lehetetlensége a beállításokon keresztül.
  • A lista tartalmazza az INTERNET, ACCESS_NETWORK_STATE, VIBRATE, ACCESS_WIFI_STATE és más rendszerkonstansokat.
  • A védelmi szint ellenőrizhető a PackageManager.getPermissionInfo segítségével az alkalmazás kódjában.

Mi az a Normal Permission Androidban

Normal Permission — az Android rendszerengedélyek egy típusa ProtectionLevel normal értékkel, amelyet az alkalmazás automatikusan megkap a telepítés pillanatában. A fejlesztőnek nem kell kódot írnia a kérelemhez — elég megadni az engedélyt az AndroidManifest.xml-ben. A felhasználó nem lát párbeszédablakokat, és nem vonhatja vissza a normal permission-t külön, csak a teljes alkalmazás törlésével.

Az Android rendszer a normál engedélyeket alacsony kockázatúként osztályozza — nem biztosítanak hozzáférést személyes adatokhoz, kamerához vagy mikrofonhoz. Tipikus példák: internet-hozzáférés, rezgésvezérlés, Wi-Fi állapot olvasása. A Android Security Model (2024) szerint az összes rendszerengedély körülbelül 40 százaléka a normal kategóriába tartozik.

Fontos tulajdonság — a normál engedélyek nem vonhatók vissza runtime-ban a Settings-en keresztül. Ha a felhasználó tiltani akarja a hozzáférést, az egyetlen mód az alkalmazás törlése. A fejlesztőknek ezt figyelembe kell venniük az architektúrában, de a felhasználók számára ez az approach egyszerűsíti az interakciót: nincsenek párbeszédablakok az első indításkor.

A kategória megjelenésének története

A normál és veszélyes engedélyekre való felosztás az Android 6.0 Marshmallow (API 23) verzióban jelent meg. Ezen verzió előtt minden engedélyt telepítéskor kértek — a felhasználó egyetlen listát látott, és azt egészében elfogadta vagy elutasította. A Normal Permission megtartotta ezt a modellt az alacsony kockázatú műveletekhez, míg a Dangerous áttért a runtime kérelemre. Ez a változás javította a felhasználói élményt és egyidejűleg növelte a biztonságot.

Mely API-k igényelnek Normal Permission-t

Számos Android rendszer-API megköveteli a normál engedély explicit megadását, még akkor is, ha a hozzáférés automatikus. Például a ConnectivityManager osztály ACCESS_NETWORK_STATE-t, a VibratorService VIBRATE-t, a WifiManager ACCESS_WIFI_STATE-t igényel. A megfelelő uses-permission deklarálása nélkül ezen API-k hívása SecurityException-t eredményez.

Hogyan működik a ProtectionLevel normal

ProtectionLevel normal — a minimális védelmi szint az Android Permission System-ben. Az ezzel a szinttel rendelkező engedélyeket a manifestben deklarálják, és a rendszer telepítéskor ellenőrzi a deklarációt, biztosítva a hozzáférést a felhasználó beavatkozása nélkül. Nem jelenik meg UI-elem, nem hívódik meg callback.

Az ellenőrzési mechanizmus a PackageManager szintjén működik. Az APK telepítésekor a rendszer beolvassa az összes uses-permission tag-et, meghatározza az egyes engedélyek védelmi szintjét a permissions.xml fájlokban lévő rendszerdefiníciókkal való összehasonlítással, és normal-level esetén egyszerűen regisztrálja a hozzáférést. A folyamat ezredmásodpercekig tart, és nem igényel interakciót a felhasználói felülettel.

A biztosítás algoritmusa a következő:

  • A rendszer beolvassa a manifestet az alkalmazás telepítésének pillanatában
  • Összehasonlítja a protectionLevel-t a /etc/permissions/ fájlban az eszközön
  • normal értéknél — automatikusan biztosítja a hozzáférést
  • Az engedély aktív marad az alkalmazás teljes eltávolításáig

A felhasználó nem vonhatja vissza a normál engedélyt a felületen keresztül. Az alkalmazás beállításaiban az Engedélyek szakaszban csak a veszélyes engedélyek jelennek meg. Ez ellentétben áll az iOS-szel, ahol minden engedély külön megerősítést igényel, függetlenül a funkció érzékenységi szintjétől.

Normal Permission vs Dangerous Permission

Normal és Dangerous Permission — két ellentétes védelmi kategória Androidban. A fő különbség a biztosítás módjában van: a normál engedélyek automatikusan járnak telepítéskor, a veszélyesek explicit beleegyezést igényelnek runtime párbeszédablakon keresztül. Ez a különbség az Android 6.0 Marshmallow verziótól kezdve be van építve a biztonsági architektúrába.

A legfontosabb jellemzők összehasonlítása:

JellemzőNormal PermissionDangerous Permission
ProtectionLevelnormaldangerous
Felhasználói kérelemNem szükségesRuntime párbeszédablak kötelező
Visszavonás lehetőségeNem, csak alkalmazás törléseIgen, beállításokon keresztül bármikor
Ellenőrzés kódbanMindig PERMISSION_GRANTEDcheckSelfPermission kötelező
PéldákINTERNET, VIBRATE, ACCESS_NETWORK_STATECAMERA, RECORD_AUDIO, ACCESS_FINE_LOCATION

Különbség a felhasználói kérelemben

A felhasználó nem lát párbeszédablakot a Normal Permission kérésekor. Ha az alkalmazásnak INTERNET kell — csendben megkapja. Dangerous Permission esetén a rendszer egy modális párbeszédablakot jelenít meg a kért hozzáférés leírásával. A felhasználó megnyomja az Allow vagy Deny gombot, és később bármikor visszavonhatja az engedélyt a Settings-en keresztül. Ez a legfontosabb UX-különbség, amely meghatározza a felületfejlesztés stratégiáját.

Mikor válasszuk a Normal-t

A Normal-t minden olyan esetben használni kell, amikor a hozzáférés nem érzékeny adatokat érint. ACCESS_NETWORK_STATE a kapcsolat ellenőrzéséhez, VIBRATE a tapintható visszajelzéshez, INTERNET a HTTP-kérésekhez — ezek mind normál engedélyek. A dangerous szint alkalmazása ott, ahol a normal elegendő, rossz gyakorlat, felesleges párbeszédablakokat hoz létre és csökkenti a felhasználó bizalmát az alkalmazásban.

Normál engedélyek listája Androidban

Az Android meghatároz több tucat normál engedélyt, amelyek mindegyike egy adott rendszerfunkciónak felel meg. Mindegyik elérhető a Manifest.permission osztály konstansain keresztül. Az alábbiakban a leggyakrabban használt engedélyek listája található az alkalmazásfejlesztésben.

KonstansHozzáférésLeírás
INTERNETHálózatHálózati socket-ek megnyitása HTTP-kérésekhez
ACCESS_NETWORK_STATEHálózatInformációk lekérése a hálózat állapotáról
ACCESS_WIFI_STATEWi-FiWi-Fi kapcsolatokkal kapcsolatos információk olvasása
VIBRATERezgésAz eszköz vibrációs motorjának vezérlése
BLUETOOTHBluetoothCsatlakozás Bluetooth-eszközökhöz
WAKE_LOCKTápellátásA processzor alvó állapotba kerülésének blokkolása
SET_ALARMÉbresztőÉbresztő beállítása az AlarmManager segítségével
CHANGE_NETWORK_STATEHálózatA hálózati kapcsolat állapotának megváltoztatása

Normál engedélyek csoportjai

A normál engedélyek nincsenek Permission Group-ba csoportosítva a UI-ban való megjelenítés céljából. Az Androidban a csoportok a beállítások képernyőre szolgálnak, ahol csak a veszélyes engedélyek jelennek meg. Logikailag azonban a normál engedélyek kategóriákra oszthatók: hálózati (INTERNET, ACCESS_NETWORK_STATE), hardveres (VIBRATE, WAKE_LOCK), rendszer (SET_ALARM) és Bluetooth engedélyek.

A Manifest.permission egyes konstansai az Android különböző verzióin változtathatják a védelmi szintet. Például a BLUETOOTH_CONNECT az Android 12+ rendszeren veszélyes engedéllyé vált runtime kérelemmel, bár régebbi verziókban normal volt. A fejlesztőknek ajánlott ellenőrizni a cél API aktuális protectionLevel értékét a dokumentáción keresztül.

Normal Permission ellenőrzése PackageManager segítségével

A fejlesztő programozottan ellenőrizheti a PackageManager segítségével, hogy egy engedély normál-e. A getPermissionInfo metódus egy PermissionInfo-t ad vissza, amelynek protectionLevel mezője tartalmazza a PermissionInfo.PROTECTION_NORMAL jelzőt. Ez hasznos a dinamikus feldolgozáshoz és hibakereséshez.

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

Normal Permission deklarálása a manifestben

A Normal Permission deklarálása az AndroidManifest.xml-ben a legegyszerűbb művelet, amely mindössze egy uses-permission tag-et igényel. További protectionLevel konfiguráció nem szükséges, mert a védelmi szintet a rendszerdefiníció határozza meg, nem az alkalmazás manifest-je. A fejlesztő egyszerűen megadja a konstans teljes nevét.

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

A rendszer telepítéskor feldolgozza az összes deklarációt. Ha a megadott engedélyek közül legalább egy protectionLevel-je eltér a normal-tól, runtime kérelemre lesz szükség. INTERNET — a legnépszerűbb normál engedély, amely a legtöbb Android-alkalmazásban jelen van, különösen azokban, amelyek HTTP-kéréseket hajtanak végre vagy tartalmat töltenek le a hálózatról.

Teljes manifest példa

A teljes AndroidManifest.xml példa normál és veszélyes engedélyekkel megmutatja a különbséget: szintaktikailag a uses-permission tag-ek azonosak, de a végrehajtási fázisban az INTERNET és VIBRATE automatikusan biztosításra kerül, míg a CAMERA párbeszédablakot igényel.

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 és Normal Permission

Könyvtárak — Google Play Services, Firebase, Glide — használatakor azok a Manifest Merger segítségével saját uses-permission elemeket adhatnak a végső manifesthez. Ezek egy része normál (INTERNET a Firebase esetében), másik része veszélyes (ACCESS_FINE_LOCATION a Google Maps esetében). A fejlesztőnek ellenőriznie kell a végső egyesített manifest-et a build/outputs/logs/manifest-merger-report.txt fájlban a közzététel előtt.

A Normal Permission korlátai

Normal Permission két alapvető korláttal rendelkezik: a felhasználó általi visszavonás lehetetlensége és a kezeléshez szükséges UI hiánya. Ha a felhasználó nem bízik az alkalmazásban, de a normál engedély már automatikusan ki lett állítva — az egyetlen kiút az alkalmazás törlése. Ez bizonyos kockázatot jelent, mivel a normál engedélyek nem blokkolhatók az Android szabványos eszközeivel.

További korlátozás jelentkezik a több profillal rendelkező eszközökön (Work Profile, Multiple Users). A Normal Permission azonnal biztosításra kerül az összes profil számára — az alkalmazás nem korlátozhatja az engedélyt csak egyre. Vállalati forgatókönyvekben ezt Managed Configurations segítségével oldják meg.

Nem lehet ellenőrizni, hogy az alkalmazás jelenleg használja-e a Normal Permission-t. A checkSelfPermission rendszermetódus csak a veszélyes engedélyeknél működik. Normal esetén mindig PERMISSION_GRANTED értéket ad vissza, ami nem tükrözi a tényleges aktivitást. Ezt figyelembe kell venni a biztonsági audit és az alkalmazás viselkedésének elemzése során.

Szintén érdemes megjegyezni, hogy egyes eszközgyártók (Xiaomi, Huawei, Samsung) módosítják az engedélyek szabványos viselkedését. A firmware-ükön a Normal Permission további engedélyeket igényelhet a MIUI vagy EMUI saját felületén. A fejlesztőknek ajánlott különböző gyártók valós eszközein tesztelni a működést.

Gyakran Ismételt Kérdések

Miben különbözik a Normal Permission a Dangerous-től?

Normal Permission automatikusan biztosításra kerül telepítéskor párbeszédablak nélkül. A Dangerous runtime kérelemmel, a felhasználó kifejezett beleegyezésével jár, és a beállításokon keresztül visszavonható. A Normal ProtectionLevel normal, a Dangerous protectionLevel dangerous értéket használ.

Kell kódot írni a Normal Permission-hoz?

Nem, a normál engedélyekhez elég deklarálni a uses-permission elemet az AndroidManifest.xml-ben. Kód a kérelemhez nem szükséges — a rendszer automatikusan biztosítja a hozzáférést. Ez különbözteti meg őket a veszélyes engedélyektől, ahol ActivityCompat.requestPermissions szükséges.

Melyek a legnépszerűbb Normal Permission-ök?

A leggyakrabban használtak: INTERNET (hálózati kérések), ACCESS_NETWORK_STATE (kapcsolat ellenőrzése), VIBRATE (tapintható visszajelzés) és WAKE_LOCK (processzor ébren tartása). Gyakorlatilag minden Android-alkalmazás használ legalább INTERNET-et.

Visszavonható a Normal Permission?

Nem, a Normal Permission nem vonható vissza az alkalmazás beállításain keresztül. Az egyetlen mód a hozzáférés leállítására az alkalmazás törlése. Ez a legfőbb különbség a veszélyes engedélyektől, amelyeket a felhasználó bármikor kikapcsolhat.

Hogyan ellenőrizhető egy engedély ProtectionLevel-je?

Használja a PackageManager.getPermissionInfo metódust, adja át az engedély nevét. A metódus egy PermissionInfo-t ad vissza a protectionLevel mezővel. Hasonlítsa össze a PermissionInfo.PROTECTION_NORMAL vagy PROTECTION_DANGEROUS konstansokkal a kategória meghatározásához.

Összefoglalás

  • Normal Permission — az Android-engedélyek kategóriája ProtectionLevel normal értékkel, automatikusan biztosítva telepítéskor.
  • A deklaráláshoz elég a uses-permission tag az AndroidManifest.xml-ben runtime kód nélkül.
  • Különböznek a veszélyesektől a párbeszédablak hiányával, a visszavonás lehetetlenségével és az alacsony kockázati szinttel.
  • Legnépszerűbbek: INTERNET, ACCESS_NETWORK_STATE, VIBRATE, ACCESS_WIFI_STATE és WAKE_LOCK.
  • A ProtectionLevel a PackageManager.getPermissionInfo segítségével ellenőrizhető a kódban.
  • A normál engedélyek nem jelennek meg az alkalmazás beállítások képernyőjén.
  • Könyvtárak használatakor ellenőrizze a végső manifest-et a Manifest Merger segítségével.

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is