Das Mainline-Modul „PermissionController“ enthält Datenschutzrichtlinien und die Benutzeroberfläche zum Erteilen und Verwalten von Berechtigungen (z. B. die Richtlinien und Benutzeroberfläche zum Erteilen und Verwalten von Berechtigungen).
Informationen zu PermissionController
Das PermissionController-Modul verarbeitet die UI, die Logik und die Rollen im Zusammenhang mit Berechtigungen, um den Zugriff für Apps für bestimmte Zwecke zu ermöglichen. Folgendes wird gesteuert:
- Gewähren von Laufzeitberechtigungen (einschließlich des Gewährens für System-Apps)
- Verwaltung von Laufzeitberechtigungen (einschließlich der Gruppierung von Berechtigungen)
- Tracking der Nutzung von Laufzeitberechtigungen
- Rollen
Ab Android 12 werden die Framework- und Systemserverklassen für Role
in das Modul verschoben, um Role
vollständig modular zu machen.
In Android 10 ist die App „Paketinstaller“ in Abschnitte unterteilt, damit die Berechtigungslogik aktualisiert werden kann. Als aktualisierbares Mainline-Modul bietet PermissionController folgende Vorteile:
- Interagiert nur über stabile @SystemApi mit dem Framework (keine @hide-API-Nutzung).
- Verarbeitet berechtigungsbezogene Intents mit Priorität > 0.
- Bietet einen Mechanismus, mit dem OEMs das Design anpassen können.
- Stellt Dienste bereit, an die das System und Anwendungen gebunden werden können, einschließlich Rollenverwaltung, Berechtigungsentzug und grundlegende Berechtigungsinformationen (für die Einstellungen).
- Unterstützt das automatische Widerrufen von Berechtigungen für nicht verwendete Apps (neu in Android 11).
In Android 9 ist die Berechtigungssteuerung Teil von com.android.packageinstaller
.
Automatischer Widerruf für nicht verwendete Apps
In Android 11 kann das PermissionsController-Modul Laufzeitberechtigungen für Apps, die längere Zeit nicht verwendet wurden, automatisch widerrufen. Bei Apps, die auf SDK 30 oder höher ausgerichtet sind, ist der automatische Widerruf standardmäßig aktiviert. Bei Apps, die auf SDK 29 oder niedriger ausgerichtet sind, ist der automatische Widerruf standardmäßig deaktiviert. Wenn die Funktion aktiviert ist, werden alle Laufzeitberechtigungen automatisch widerrufen. Ausgenommen sind alle vorab gewährten Berechtigungen, einschließlich richtlinien- und systembezogener Berechtigungen sowie Berechtigungen, die standardmäßig oder nach Rolle gewährt werden. Weitere Informationen finden Sie unter Automatisches Zurücksetzen von Berechtigungen für nicht verwendete Apps.
Paketformat
Das Format des PermissionController-Moduls unterscheidet sich je nach Release.
In Android 11 oder höher ist das PermissionController-Modul im APEX-Format verfügbar und kann aktualisiert werden. Der Paketname lautet
com.google.android.permission
.In Android 10 ist das PermissionController-Modul im APK-Format und kann nicht aktualisiert werden. Der Paketname lautet
com.google.android.permissioncontroller
.
Modulgrenze
In Android 12 wird der Code des Berechtigungsmoduls aus packages/apps/PermissionController
(dem platform/packages/apps/PackageInstaller
-Projekt) und frameworks/base/apex/permission
(einem Unterverzeichnis des frameworks/base
-Projekts) verschoben.
Die neue Projektstruktur für packages/modules/Permission
sieht so aus:
- Dateien aus „
frameworks/base/apex/permission
“ - PermissionController-Dateien von
packages/apps/PermissionController
OEMs können die Beispielbefehle verwenden, um ihre Patches aus den ursprünglichen Projektverzeichnissen in das neue Projektverzeichnis zu verschieben.
Patch aus frameworks/base/apex/permission verschieben
root/frameworks/base/$ git format-patch -1 --relative=apex/permission commit --stdout > patch-file.txt
root/packages/modules/Permission$ git am -p2 patch-file.txt
Patch aus packages/apps/PermissionController verschieben
root/packages/apps/PermissionController$ git format-patch -1 commit --stdout > patch-file.txt
root/packages/modules/Permission$ git am -p2 --directory=PermissionController patch-file.txt
Personalisierung
OEMs können das Design der Berechtigungs-UI (Farben, Ränder, Schriftarten und Drawables) mithilfe von Laufzeit-Ressourcen-Overlays (Runtime Resource Overlays, RROs) anpassen.