Normal Permission in Android — was es ist, Schutzstufen und Funktionsprinzip

Autor: IT Sectr Veröffentlicht: 2026-05-20 Lesezeit: 8 Min.

Normal Permission ist eine Kategorie von Berechtigungen in Android, die das System automatisch ohne Rückfrage beim Benutzer erteilt. Laut Android Developer Documentation, 2024 haben normale Berechtigungen ProtectionLevel normal und benötigen im Gegensatz zu gefährlichen keinen Runtime-Dialog. Sie umfassen den Zugriff auf das Internet, den Netzwerkstatus und die Vibration, ohne Risiken für die sensiblen Daten des Benutzers zu schaffen.

Wichtige Punkte

  • Normal Permission ist eine Kategorie von Android-Berechtigungen mit ProtectionLevel normal, die automatisch bei der Installation erteilt werden.
  • Zur Verwendung genügt es, uses-permission im Manifest hinzuzufügen — dem Benutzer wird kein Dialog angezeigt.
  • Der Hauptunterschied zu gefährlichen ist das Fehlen einer Runtime-Anfrage und die Unmöglichkeit des Widerrufs über die Einstellungen.
  • Die Liste umfasst INTERNET, ACCESS_NETWORK_STATE, VIBRATE, ACCESS_WIFI_STATE und andere Systemkonstanten.
  • Sie können die Schutzstufe über PackageManager.getPermissionInfo im Anwendungscode überprüfen.

Was ist Normal Permission in Android

Normal Permission ist eine Art Systemberechtigung in Android mit ProtectionLevel normal, die einer Anwendung automatisch zum Zeitpunkt der Installation erteilt wird. Der Entwickler muss keinen Code schreiben, um sie anzufordern — es reicht, die Berechtigung in AndroidManifest.xml zu deklarieren. Der Benutzer sieht keine Dialoge und kann eine normale Berechtigung nicht separat widerrufen, sondern nur durch vollständiges Deinstallieren der Anwendung.

Das Android-System stuft normale Berechtigungen als risikoarm ein — sie gewähren keinen Zugriff auf persönliche Daten, Kamera oder Mikrofon. Typische Beispiele: Internetzugriff, Vibrationssteuerung, Auslesen des Wi-Fi-Status. Laut Android Security Model (2024) gehören etwa 40 Prozent aller Systemberechtigungen zur Kategorie normal.

Eine wichtige Eigenschaft — normale Berechtigungen können zur Laufzeit nicht über die Einstellungen widerrufen werden. Wenn der Benutzer den Zugriff verweigern möchte, besteht der einzige Weg darin, die Anwendung zu deinstallieren. Entwickler sollten dies in der Architektur berücksichtigen, aber für Benutzer vereinfacht dieser Ansatz die Interaktion: keine Dialoge beim ersten Start.

Geschichte der Kategorie

Die Unterteilung in normale und gefährliche Berechtigungen erschien in Android 6.0 Marshmallow (API 23). Vor dieser Version wurden alle Berechtigungen bei der Installation angefragt — der Benutzer sah eine einzige Liste und akzeptierte oder lehnte sie als Ganzes ab. Normal Permission behielt dieses Modell für risikoarme Operationen bei, während Dangerous zur Runtime-Anfrage überging. Diese Änderung verbesserte die Benutzererfahrung und erhöhte gleichzeitig die Sicherheit.

Welche APIs benötigen Normal Permission

Viele Android-System-APIs erfordern eine explizite Deklaration einer normalen Berechtigung, auch wenn der Zugriff automatisch erfolgt. Beispielsweise benötigt die Klasse ConnectivityManager ACCESS_NETWORK_STATE, VibratorService benötigt VIBRATE, WifiManager benötigt ACCESS_WIFI_STATE. Ohne Deklaration des entsprechenden uses-permission führt der Aufruf dieser APIs zu einer SecurityException.

Wie ProtectionLevel normal funktioniert

ProtectionLevel normal ist die niedrigste Schutzstufe im Android-Berechtigungssystem. Berechtigungen mit dieser Stufe werden im Manifest deklariert, und das System überprüft die Deklaration bei der Installation und gewährt Zugriff ohne Benutzereingriff. Es werden keine UI-Elemente angezeigt, keine Callbacks aufgerufen.

Der Überprüfungsmechanismus arbeitet auf PackageManager-Ebene. Während der APK-Installation scannt das System alle uses-permission-Tags, bestimmt die Schutzstufe jeder Berechtigung durch Abgleich mit den Systemdefinitionen in den permissions.xml-Dateien und registriert für die normale Stufe einfach den Zugriff. Der Vorgang dauert Millisekunden und erfordert keine Interaktion mit der Benutzeroberfläche.

Der Erteilungsalgorithmus funktioniert wie folgt:

  • Das System liest das Manifest zum Zeitpunkt der Anwendungsinstallation
  • Es gleicht den protectionLevel in /etc/permissions/ auf dem Gerät ab
  • Bei Wert normal — gewährt automatisch Zugriff
  • Die Berechtigung bleibt aktiv, bis die Anwendung vollständig deinstalliert wird

Der Benutzer kann eine normale Berechtigung nicht über die Oberfläche widerrufen. In den Anwendungseinstellungen im Bereich Berechtigungen werden nur gefährliche Berechtigungen angezeigt. Dies steht im Gegensatz zu iOS, wo jede Berechtigung unabhängig vom Sensitivitätsgrad der Funktion eine separate Bestätigung erfordert.

Normal Permission vs Dangerous Permission

Normal und Dangerous Permission sind zwei gegensätzliche Schutzkategorien in Android. Der Hauptunterschied liegt in der Erteilungsmethode: normale werden automatisch bei der Installation erteilt, gefährliche erfordern eine explizite Zustimmung durch einen Runtime-Dialog. Diese Unterscheidung ist in der Android-Sicherheitsarchitektur ab Version 6.0 Marshmallow verankert.

Vergleich der Hauptmerkmale:

MerkmalNormal PermissionDangerous Permission
ProtectionLevelnormaldangerous
BenutzeranfrageNicht erforderlichRuntime-Dialog obligatorisch
WiderrufbarkeitNein, nur durch DeinstallationJa, jederzeit über Einstellungen
Überprüfung im CodeImmer PERMISSION_GRANTEDcheckSelfPermission obligatorisch
BeispieleINTERNET, VIBRATE, ACCESS_NETWORK_STATECAMERA, RECORD_AUDIO, ACCESS_FINE_LOCATION

Unterschied bei der Benutzeranfrage

Der Benutzer sieht keine Dialoge bei der Anforderung von Normal Permission. Wenn eine App INTERNET benötigt — erhält sie es stillschweigend. Bei Dangerous Permission zeigt das System einen modalen Dialog mit der Beschreibung des angeforderten Zugriffs. Der Benutzer drückt Erlauben oder Verweigern und kann die Berechtigung später jederzeit über die Einstellungen widerrufen. Dies ist ein entscheidender UX-Unterschied, der die Strategie der Schnittstellenentwicklung bestimmt.

Wann Normal wählen

Normal sollte in allen Fällen verwendet werden, in denen der Zugriff keine sensiblen Daten betrifft. ACCESS_NETWORK_STATE zur Überprüfung der Konnektivität, VIBRATE für haptisches Feedback, INTERNET für HTTP-Anfragen — all dies sind normale Berechtigungen. Die Verwendung der gefährlichen Stufe, wo normal ausreicht, ist eine schlechte Praxis, die unnötige Dialoge erzeugt und das Vertrauen des Benutzers in die Anwendung verringert.

Liste der normalen Berechtigungen in Android

Android definiert mehrere Dutzend normaler Berechtigungen, die jeweils einer bestimmten Systemfunktion entsprechen. Alle sind über Konstanten der Klasse Manifest.permission verfügbar. Nachfolgend finden Sie eine Liste der am häufigsten in der Anwendungsentwicklung verwendeten.

KonstanteZugriffBeschreibung
INTERNETNetzwerkÖffnen von Netzwerk-Sockets für HTTP-Anfragen
ACCESS_NETWORK_STATENetzwerkAbrufen von Informationen über den Netzwerkstatus
ACCESS_WIFI_STATEWi-FiAuslesen von Informationen über Wi-Fi-Verbindungen
VIBRATEVibrationSteuerung des Gerätevibrators
BLUETOOTHBluetoothVerbindung zu Bluetooth-Geräten
WAKE_LOCKStromVerhindern des Prozessor-Schlafmodus
SET_ALARMWeckerEinstellen eines Alarms über AlarmManager
CHANGE_NETWORK_STATENetzwerkÄndern des Netzwerkverbindungsstatus

Gruppen normaler Berechtigungen

Normale Berechtigungen werden für UI-Anzeigezwecke nicht in Permission Groups gruppiert. Gruppen in Android sind für den Einstellungsbildschirm gedacht, wo nur gefährliche Berechtigungen angezeigt werden. Logisch lassen sich normale Berechtigungen jedoch in Kategorien einteilen: Netzwerk (INTERNET, ACCESS_NETWORK_STATE), Hardware (VIBRATE, WAKE_LOCK), System (SET_ALARM) und Bluetooth-Berechtigungen.

Einige Konstanten aus Manifest.permission können auf verschiedenen Android-Versionen ihre Schutzstufe ändern. Beispielsweise wurde BLUETOOTH_CONNECT auf Android 12+ zu einer gefährlichen Berechtigung mit Runtime-Anfrage, während es in älteren Versionen normal war. Entwicklern wird empfohlen, den aktuellen protectionLevel für die Ziel-API über die Dokumentation zu prüfen.

Überprüfung von Normal Permission über PackageManager

Ein Entwickler kann programmatisch über PackageManager prüfen, ob eine Berechtigung normal ist. Die Methode getPermissionInfo gibt PermissionInfo zurück, dessen protectionLevel-Feld das Flag PermissionInfo.PROTECTION_NORMAL enthält. Dies ist nützlich für die dynamische Handhabung und Fehlersuche.

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

So deklarieren Sie Normal Permission im Manifest

Normal Permission deklarieren in AndroidManifest.xml ist die einfachste Operation, die nur ein uses-permission-Tag erfordert. Es ist keine zusätzliche protectionLevel-Konfiguration erforderlich, da die Schutzstufe durch die Systemdefinition und nicht durch das Anwendungsmanifest bestimmt wird. Der Entwickler gibt einfach den vollständigen Namen der Konstante an.

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

Das System verarbeitet alle Deklarationen bei der Installation. Wenn mindestens eine der deklarierten Berechtigungen einen anderen protectionLevel als normal hat, ist eine Runtime-Anfrage erforderlich. INTERNET ist die beliebteste normale Berechtigung, die in den meisten Android-Anwendungen vorhanden ist, insbesondere in solchen, die HTTP-Anfragen stellen oder Inhalte aus dem Netzwerk laden.

Beispiel eines vollständigen Manifests

Ein vollständiges Beispiel von AndroidManifest.xml mit normalen und gefährlichen Berechtigungen zeigt den Unterschied: syntaktisch sind die uses-permission-Tags gleich, aber zur Laufzeit werden INTERNET und VIBRATE automatisch erteilt, während CAMERA einen Dialog erfordert.

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

Bei Verwendung von Bibliotheken — Google Play Services, Firebase, Glide — können diese über den Manifest Merger eigene uses-permission-Einträge zum endgültigen Manifest hinzufügen. Einige sind normal (INTERNET für Firebase), andere gefährlich (ACCESS_FINE_LOCATION für Google Maps). Der Entwickler sollte das endgültige zusammengeführte Manifest in build/outputs/logs/manifest-merger-report.txt vor der Veröffentlichung überprüfen.

Einschränkungen von Normal Permission

Normal Permission hat zwei grundlegende Einschränkungen: die Unmöglichkeit des Widerrufs durch den Benutzer und das Fehlen einer Verwaltungsoberfläche. Wenn der Benutzer der Anwendung nicht vertraut, die normale Berechtigung aber bereits automatisch erteilt wurde — besteht die einzige Lösung darin, die Anwendung zu deinstallieren. Dies birgt ein gewisses Risiko, da normale Berechtigungen mit den standardmäßigen Android-Mitteln nicht blockiert werden können.

Eine zusätzliche Einschränkung zeigt sich auf Geräten mit mehreren Profilen (Work Profile, Multiple Users). Normal Permission wird allen Profilen auf einmal erteilt — die Anwendung kann die Berechtigung nicht auf nur ein Profil beschränken. In Unternehmensszenarien wird dies über Managed Configurations gelöst.

Es ist nicht überprüfbar, ob eine Anwendung zu einem bestimmten Zeitpunkt eine Normal Permission nutzt. Die Systemmethode checkSelfPermission funktioniert nur für gefährliche Berechtigungen. Für normale gibt sie immer PERMISSION_GRANTED zurück, was die tatsächliche Aktivität nicht widerspiegelt. Dies sollte bei Sicherheitsaudits und der Analyse des Anwendungsverhaltens berücksichtigt werden.

Zu beachten ist auch, dass einige Gerätehersteller (Xiaomi, Huawei, Samsung) das Standardverhalten von Berechtigungen modifizieren. Auf deren Firmware kann Normal Permission zusätzliche Berechtigungen in der proprietären MIUI- oder EMUI-Oberfläche erfordern. Entwicklern wird empfohlen, auf realen Geräten verschiedener Anbieter zu testen.

Häufig gestellte Fragen

Wie unterscheidet sich Normal Permission von Dangerous?

Normal Permission wird bei der Installation automatisch ohne Dialog erteilt. Dangerous erfordert eine Runtime-Anfrage mit expliziter Zustimmung des Benutzers und kann über die Einstellungen widerrufen werden. Normal verwendet ProtectionLevel normal, Dangerous protectionLevel dangerous.

Muss ich Code für Normal Permission schreiben?

Nein, für normale Berechtigungen reicht es, uses-permission in AndroidManifest.xml zu deklarieren. Es ist kein Anfragecode erforderlich — das System gewährt den Zugriff automatisch. Dies unterscheidet sie von gefährlichen, wo ActivityCompat.requestPermissions benötigt wird.

Welche Normal Permissions sind am beliebtesten?

Die am häufigsten verwendeten: INTERNET (Netzwerkanfragen), ACCESS_NETWORK_STATE (Konnektivitätsprüfung), VIBRATE (haptisches Feedback) und WAKE_LOCK (Prozessor wach halten). Praktisch jede Android-Anwendung verwendet mindestens INTERNET.

Kann Normal Permission widerrufen werden?

Nein, Normal Permission kann nicht über die Anwendungseinstellungen widerrufen werden. Der einzige Weg, den Zugriff zu beenden, ist die Deinstallation der Anwendung. Dies ist ein wesentlicher Unterschied zu gefährlichen Berechtigungen, die der Benutzer jederzeit deaktivieren kann.

Wie überprüfe ich den ProtectionLevel einer Berechtigung?

Verwenden Sie PackageManager.getPermissionInfo und übergeben Sie den String-Namen der Berechtigung. Die Methode gibt PermissionInfo mit einem protectionLevel-Feld zurück. Vergleichen Sie es mit den Konstanten PermissionInfo.PROTECTION_NORMAL oder PROTECTION_DANGEROUS, um die Kategorie zu bestimmen.

Zusammenfassung

  • Normal Permission ist eine Kategorie von Android-Berechtigungen mit ProtectionLevel normal, die automatisch bei der Installation erteilt werden.
  • Zur Deklaration reicht das uses-permission-Tag in AndroidManifest.xml ohne Runtime-Code.
  • Sie unterscheiden sich von gefährlichen durch fehlenden Dialog, fehlende Widerrufbarkeit und geringes Risiko.
  • Die beliebtesten: INTERNET, ACCESS_NETWORK_STATE, VIBRATE, ACCESS_WIFI_STATE und WAKE_LOCK.
  • Der ProtectionLevel wird über PackageManager.getPermissionInfo im Code geprüft.
  • Normale Berechtigungen werden im Einstellungsbildschirm der Anwendungen nicht angezeigt.
  • Bei Verwendung von Bibliotheken das endgültige Manifest über Manifest Merger prüfen.

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch