PermissionController

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.