PermissionController

Das Mainline-Modul „PermissionController“ enthält die Datenschutzerklärung und die Benutzeroberfläche für die Erteilung und Verwaltung von Berechtigungen (z. B. die Richtlinien und die Benutzeroberfläche für die Erteilung und Verwaltung von Berechtigungen).

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)
  • Erfassung der Laufzeitberechtigungsnutzung
  • 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 die stabile @SystemApi mit dem Framework (keine Verwendung der @hide API).
  • Hier werden berechtigungsbezogene Intents mit einer Priorität von über 0 verarbeitet.
  • Bietet OEMs einen Mechanismus zum Anpassen der Themen.
  • 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.

Automatischen Widerruf 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 Apps automatisch zurücksetzen.

Paketformat

Das Format des PermissionController-Moduls unterscheidet sich je nach Release.

  • 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 (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 von 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 von „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 Berechtigungsoberfläche (Farben, Ränder, Schriftarten und Zeichnelemente) mithilfe von Laufzeitressourcen-Overlays (RROS) anpassen.