Das PermissionController-Mainline-Modul enthält Datenschutzerklärungen und die Benutzeroberfläche für das Gewähren und Verwalten von Berechtigungen (z. B. die Richtlinien und die Benutzeroberfläche zum Gewähren und Verwalten von Berechtigungen).
Über PermissionController
Das Modul „PermissionController“ verarbeitet berechtigungsbezogene Benutzeroberflächen, Logik und Rollen, um Apps Zugriff für einen bestimmten Zweck zu gewähren. Sie steuert Folgendes:
- Erteilung von Laufzeitberechtigungen (einschließlich Erteilung an System-Apps)
- Verwaltung von Laufzeitberechtigungen (einschließlich Gruppierung von Berechtigungen)
- Nutzungs-Tracking der Laufzeitberechtigungen
- Rollen
Ab Android 12 werden die Framework- und Systemserverklassen für Role
in das Modul verschoben, um Role
vollständig modular zu machen.
Unter Android 10 ist die App „Paketmanager“ in Abschnitte unterteilt, damit die Berechtigungslogik aktualisiert werden kann. Als aktualisierbares Mainline-Modul bietet PermissionController folgende Vorteile:
- Interagiert nur über eine stabile @SystemApi mit dem Framework (keine @hide-API-Nutzung).
- Hier werden berechtigungsbezogene Intents mit einer Priorität von über 0 verarbeitet.
- Stellt einen Mechanismus bereit, mit dem OEMs das Thema anpassen können.
- Bietet Dienste, an die das System und Anwendungen gebunden werden können, einschließlich Rollenverwaltung, Widerruf von Berechtigungen und grundlegenden Berechtigungsinformationen (für Einstellungen).
- Unterstützt das automatische Widerrufen für nicht verwendete Apps (neu in Android 11).
Unter Android 9 ist die Berechtigungssteuerung Teil von com.android.packageinstaller
.
Automatische Aufhebung der Sperrung für nicht verwendete Apps
In Android 11 kann das PermissionsController-Modul Laufzeitberechtigungen für Apps, die über einen längeren Zeitraum nicht verwendet wurden, automatisch widerrufen. Bei Apps, die auf das SDK 30 oder höher ausgerichtet sind, ist die automatische Widerrufsfunktion standardmäßig aktiviert. Bei Apps, die auf das SDK 29 oder niedriger ausgerichtet sind, ist die automatische Widerrufsfunktion standardmäßig deaktiviert. Wenn die Funktion aktiviert ist, wirkt sich die automatische Widerrufung auf alle Laufzeitberechtigungen aus, ausgenommen alle vorab gewährten Berechtigungen, einschließlich richtlinien- und systemfester Berechtigungen sowie standardmäßig oder per Rolle gewährter Berechtigungen. Weitere Informationen finden Sie unter Berechtigungen von nicht verwendeten Anwendungen automatisch zurücksetzen.
Paketformat
Das Format des PermissionController-Moduls unterscheidet sich zwischen den Releases.
Unter Android 11 oder höher ist das PermissionController-Modul im APEX-Format und kann aktualisiert werden. Der Paketname lautet
com.google.android.permission
.Unter 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
(platform/packages/apps/PackageInstaller
-Projekt) und frameworks/base/apex/permission
(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 Zeichnelemente) mithilfe von Laufzeitressourcen-Overlays (RROS) anpassen.