Normal Permission in Android — wat is het, beschermingsniveaus en werkingsprincipe

Auteur: IT Sectr Gepubliceerd: 2026-05-20 Leestijd: 8 min

Normal Permission — een categorie machtigingen in Android die het systeem automatisch verleent zonder de gebruiker te vragen. Volgens Android Developer Documentation, 2024 hebben normale machtigingen ProtectionLevel normal en vereisen geen runtime-dialoog, in tegenstelling tot gevaarlijke. Ze dekken toegang tot internet, netwerkstatus en trilling, zonder risico voor vertrouwelijke gebruikersgegevens.

Belangrijkste

  • Normal Permission — categorie Android-machtigingen met ProtectionLevel normal, automatisch verleend bij installatie.
  • Voor gebruik volstaat het toevoegen van uses-permission in het manifest — de dialoog wordt niet aan de gebruiker getoond.
  • Belangrijkste verschil met gevaarlijke — afwezigheid van runtime-verzoek en onmogelijkheid van intrekking via instellingen.
  • De lijst omvat INTERNET, ACCESS_NETWORK_STATE, VIBRATE, ACCESS_WIFI_STATE en andere systeemconstanten.
  • Het beschermingsniveau kan worden gecontroleerd via PackageManager.getPermissionInfo in de app-code.

Wat is Normal Permission in Android

Normal Permission — een type Android-systeemmachtiging met ProtectionLevel normal, automatisch verleend aan de app op het moment van installatie. De ontwikkelaar hoeft geen code te schrijven voor een verzoek — het volstaat de machtiging in AndroidManifest.xml te vermelden. De gebruiker ziet geen dialogen en kan normal permission niet apart intrekken, alleen door de hele app te verwijderen.

Het Android-systeem classificeert normale machtigingen als laag risico — ze geven geen toegang tot persoonlijke gegevens, camera of microfoon. Typische voorbeelden: toegang tot internet, trillingsbeheer, uitlezen van Wi-Fi-status. Volgens Android Security Model (2024) behoort ongeveer 40 procent van alle systeemmachtigingen tot de categorie normal.

Een belangrijke eigenschap — normale machtigingen worden niet ingetrokken in runtime via Settings. Als de gebruiker toegang wil weigeren, is de enige manier de app te verwijderen. Ontwikkelaars moeten hiermee rekening houden in de architectuur, maar voor gebruikers vereenvoudigt deze aanpak de interactie: geen dialogen bij het eerste opstarten.

Geschiedenis van de categorie

De verdeling in normale en gevaarlijke machtigingen verscheen in Android 6.0 Marshmallow (API 23). Vóór deze versie werden alle machtigingen bij installatie gevraagd — de gebruiker zag een enkele lijst en accepteerde of weigerde deze in zijn geheel. Normal Permission behield dit model voor laag-risico operaties, terwijl Dangerous overging op runtime-verzoek. Deze wijziging verbeterde de gebruikerservaring en verhoogde tegelijkertijd de beveiliging.

Welke API's vereisen Normal Permission

Veel Android-systeem-API's vereisen expliciete vermelding van een normale machtiging, zelfs als de toegang automatisch is. Bijvoorbeeld, de klasse ConnectivityManager vereist ACCESS_NETWORK_STATE, VibratorService vereist VIBRATE, WifiManager vereist ACCESS_WIFI_STATE. Zonder declaratie van de bijbehorende uses-permission leidt aanroep van deze API's tot SecurityException.

Hoe werkt ProtectionLevel normal

ProtectionLevel normal — het minimale beschermingsniveau in het Android Permission System. Machtigingen met dit niveau worden in het manifest gedeclareerd en het systeem controleert de declaratie bij installatie, waarbij toegang wordt verleend zonder tussenkomst van de gebruiker. Geen UI-elementen worden getoond, geen callbacks worden aangeroepen.

Het controlemechanisme werkt op het niveau van PackageManager. Bij installatie van de APK scant het systeem alle uses-permission-tags, bepaalt het beschermingsniveau van elke machtiging door vergelijking met systeemdefinities in permissions.xml-bestanden en registreert voor normal-level eenvoudigweg de toegang. Het proces duurt milliseconden en vereist geen interactie met de gebruikersinterface.

Het verleningsalgoritme ziet er als volgt uit:

  • Het systeem leest het manifest op het moment van app-installatie
  • Vergelijkt protectionLevel in /etc/permissions/ op het apparaat
  • Bij de waarde normal — verleent automatisch toegang
  • De machtiging blijft actief tot volledige verwijdering van de app

De gebruiker kan een normale machtiging niet via de interface intrekken. In de app-instellingen in de sectie Machtigingen worden alleen gevaarlijke machtigingen weergegeven. Dit contrasteert met iOS, waar elke machtiging afzonderlijke bevestiging vereist, ongeacht het gevoeligheidsniveau van de functie.

Normal Permission vs Dangerous Permission

Normal en Dangerous Permission — twee tegenovergestelde beschermingscategorieën in Android. Het belangrijkste verschil zit in de verleningswijze: normale worden automatisch gegeven bij installatie, gevaarlijke vereisen expliciete toestemming via een runtime-dialoog. Dit verschil is ingebouwd in de beveiligingsarchitectuur van Android vanaf versie 6.0 Marshmallow.

Vergelijking van de belangrijkste kenmerken:

KenmerkNormal PermissionDangerous Permission
ProtectionLevelnormaldangerous
GebruikersverzoekNiet vereistRuntime-dialoog verplicht
IntrekkingsmogelijkheidNee, alleen app verwijderenJa, via instellingen op elk moment
Controle in codeAltijd PERMISSION_GRANTEDcheckSelfPermission verplicht
VoorbeeldenINTERNET, VIBRATE, ACCESS_NETWORK_STATECAMERA, RECORD_AUDIO, ACCESS_FINE_LOCATION

Verschil in gebruikersverzoek

De gebruiker ziet geen dialogen bij een verzoek om Normal Permission. Als de app INTERNET nodig heeft — krijgt deze het stil. Voor Dangerous Permission toont het systeem een modale dialoog met beschrijving van de gevraagde toegang. De gebruiker drukt op Allow of Deny en kan later op elk moment de machtiging intrekken via Settings. Dit is het belangrijkste UX-verschil dat de strategie voor interface-ontwikkeling bepaalt.

Wanneer Normal kiezen

Normal moet worden gebruikt in alle gevallen waarin de toegang geen gevoelige gegevens betreft. ACCESS_NETWORK_STATE voor connectiviteitscontrole, VIBRATE voor tactiele feedback, INTERNET voor HTTP-verzoeken — dit zijn allemaal normale machtigingen. Het toepassen van dangerous-niveau waar normal voldoende is, is een slechte praktijk die onnodige dialogen creëert en het vertrouwen van de gebruiker in de app vermindert.

Lijst van normale machtigingen in Android

Android definieert tientallen normale machtigingen, elk overeenkomend met een specifieke systeemfunctie. Ze zijn allemaal toegankelijk via constanten van de klasse Manifest.permission. Hieronder staat een lijst van de meest gebruikte in app-ontwikkeling.

ConstanteToegangBeschrijving
INTERNETNetwerkOpenen van netwerksockets voor HTTP-verzoeken
ACCESS_NETWORK_STATENetwerkInformatie verkrijgen over de netwerkstatus
ACCESS_WIFI_STATEWi-FiInformatie lezen over Wi-Fi-verbindingen
VIBRATETrillingBedienen van de vibratiemotor van het apparaat
BLUETOOTHBluetoothVerbinding maken met Bluetooth-apparaten
WAKE_LOCKVoedingVoorkomen dat de processor in slaap valt
SET_ALARMAlarmAlarm instellen via AlarmManager
CHANGE_NETWORK_STATENetwerkWijzigen van de netwerkverbindingsstatus

Groepen van normale machtigingen

Normale machtigingen worden niet gegroepeerd in Permission Group voor weergave in de UI. Groepen in Android zijn bedoeld voor het instellingenscherm, waar alleen gevaarlijke machtigingen worden getoond. Logisch gezien kunnen normale machtigingen echter in categorieën worden verdeeld: netwerk (INTERNET, ACCESS_NETWORK_STATE), hardware (VIBRATE, WAKE_LOCK), systeem (SET_ALARM) en Bluetooth-machtigingen.

Sommige constanten uit Manifest.permission kunnen het beschermingsniveau wijzigen op verschillende Android-versies. Bijvoorbeeld BLUETOOTH_CONNECT werd op Android 12+ een gevaarlijke machtiging met runtime-verzoek, hoewel het in oudere versies normal was. Ontwikkelaars wordt aangeraden het actuele protectionLevel voor de doel-API via documentatie te controleren.

Normal Permission controleren via PackageManager

De ontwikkelaar kan programmatisch controleren of een machtiging normaal is via PackageManager. De methode getPermissionInfo retourneert PermissionInfo waarvan het veld protectionLevel de vlag PermissionInfo.PROTECTION_NORMAL bevat. Dit is nuttig voor dynamische verwerking en 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
}

Normal Permission declareren in het manifest

Declaratie van Normal Permission in AndroidManifest.xml is de eenvoudigste bewerking, die slechts één uses-permission-tag vereist. Extra configuratie van protectionLevel is niet nodig, omdat het beschermingsniveau wordt bepaald door de systeemdefinitie, niet door het app-manifest. De ontwikkelaar vermeldt eenvoudigweg de volledige naam van de constante.

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

Het systeem verwerkt bij installatie alle declaraties. Als ten minste één van de vermelde machtigingen een protectionLevel anders dan normal heeft, is een runtime-verzoek vereist. INTERNET — de populairste normale machtiging, aanwezig in de meeste Android-apps, vooral apps die HTTP-verzoeken uitvoeren of inhoud uit het netwerk laden.

Voorbeeld van een volledig manifest

Een volledig voorbeeld van AndroidManifest.xml met normale en gevaarlijke machtigingen toont het verschil: syntactisch zijn de uses-permission-tags identiek, maar in de uitvoeringsfase worden INTERNET en VIBRATE automatisch verleend, terwijl CAMERA een dialoog vereist.

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

Bij gebruik van bibliotheken — Google Play Services, Firebase, Glide — kunnen deze via Manifest Merger eigen uses-permission toevoegen aan het definitieve manifest. Sommige zijn normaal (INTERNET voor Firebase), andere gevaarlijk (ACCESS_FINE_LOCATION voor Google Maps). De ontwikkelaar moet het definitieve samengevoegde manifest controleren in build/outputs/logs/manifest-merger-report.txt vóór publicatie.

Beperkingen van Normal Permission

Normal Permission heeft twee fundamentele beperkingen: onmogelijkheid van intrekking door de gebruiker en afwezigheid van UI voor beheer. Als de gebruiker de app niet vertrouwt, maar de normale machtiging is al automatisch verleend — is de enige uitweg de app verwijderen. Dit creëert een zeker risico, omdat normale machtigingen niet worden geblokkeerd door standaard Android-hulpmiddelen.

Een extra beperking doet zich voor op apparaten met meerdere profielen (Work Profile, Multiple Users). Normal Permission wordt onmiddellijk verleend voor alle profielen — de app kan de machtiging niet beperken tot slechts één. In bedrijfsscenario's wordt dit opgelost via Managed Configurations.

Het is niet mogelijk te controleren of de app op dat moment Normal Permission gebruikt. De systeemmethode checkSelfPermission werkt alleen voor gevaarlijke machtigingen. Voor normal retourneert deze altijd PERMISSION_GRANTED, wat de werkelijke activiteit niet weerspiegelt. Hiermee moet rekening worden gehouden bij beveiligingsaudits en analyse van app-gedrag.

Ook is het goed om te onthouden dat sommige apparaatfabrikanten (Xiaomi, Huawei, Samsung) het standaard gedrag van machtigingen wijzigen. Op hun firmware kan Normal Permission extra toestemmingen vereisen in de eigen shell MIUI of EMUI. Ontwikkelaars wordt aangeraden te testen op echte apparaten van verschillende fabrikanten.

Veelgestelde vragen

Waarin verschilt Normal Permission van Dangerous?

Normal Permission wordt automatisch verleend bij installatie zonder dialoog. Dangerous vereist een runtime-verzoek met expliciete toestemming van de gebruiker en kan via instellingen worden ingetrokken. Normal gebruikt ProtectionLevel normal, Dangerous — protectionLevel dangerous.

Moet ik code schrijven voor Normal Permission?

Nee, voor normale machtigingen volstaat het declareren van uses-permission in AndroidManifest.xml. Code voor een verzoek is niet nodig — het systeem verleent toegang automatisch. Dit onderscheidt ze van gevaarlijke machtigingen, waarvoor ActivityCompat.requestPermissions nodig is.

Welke Normal Permission zijn het populairst?

De meest gebruikte: INTERNET (netwerkverzoeken), ACCESS_NETWORK_STATE (connectiviteitscontrole), VIBRATE (tactiele feedback) en WAKE_LOCK (processor actief houden). Vrijwel elke Android-app gebruikt ten minste INTERNET.

Kan Normal Permission worden ingetrokken?

Nee, Normal Permission kan niet worden ingetrokken via de app-instellingen. De enige manier om de toegang te stoppen is de app verwijderen. Dit is het belangrijkste verschil met gevaarlijke machtigingen, die de gebruiker op elk moment kan uitschakelen.

Hoe controleer ik het ProtectionLevel van een machtiging?

Gebruik PackageManager.getPermissionInfo en geef de string-naam van de machtiging door. De methode retourneert PermissionInfo met het veld protectionLevel. Vergelijk met de constanten PermissionInfo.PROTECTION_NORMAL of PROTECTION_DANGEROUS om de categorie te bepalen.

Samenvatting

  • Normal Permission — categorie Android-machtigingen met ProtectionLevel normal, automatisch verleend bij installatie.
  • Voor declaratie volstaat de tag uses-permission in AndroidManifest.xml zonder runtime-code.
  • Ze verschillen van gevaarlijke door afwezigheid van dialoog, onmogelijkheid van intrekking en laag risiconiveau.
  • Populairst: INTERNET, ACCESS_NETWORK_STATE, VIBRATE, ACCESS_WIFI_STATE en WAKE_LOCK.
  • ProtectionLevel wordt gecontroleerd via PackageManager.getPermissionInfo in code.
  • Normale machtigingen worden niet weergegeven op het instellingenscherm van de app.
  • Bij gebruik van bibliotheken het definitieve manifest controleren via Manifest Merger.

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook