PermissionController

Das PermissionController-Modul ermöglicht aktualisierbare Datenschutzrichtlinien und UI-Elemente (z. B. die Richtlinien und die UI zum Gewähren und Verwalten von Berechtigungen).

Ab Android 12 werden die Framework- und Systemserverklassen für Role in das Modul verschoben, um Role vollständig modular zu gestalten.

Über PermissionController

Das com.google.android.permissioncontroller APK verarbeitet die berechtigungsbezogene Benutzeroberfläche, Logik und Rollen, um den Zugriff für Apps für bestimmte Zwecke zu ermöglichen. Es steuert Folgendes:

  • Erteilung von Laufzeitberechtigungen (einschließlich Erteilung von System-Apps)

  • Laufzeit-Berechtigungsverwaltung (einschließlich Gruppierung von Berechtigungen)

  • Nachverfolgung der Laufzeitberechtigungsnutzung

  • Rollen

In Android 9 waren solche Berechtigungen Teil von com.google.android.packageinstaller . In Android 10 ist die Package Installer-App in Abschnitte unterteilt, damit die Berechtigungslogik aktualisiert werden kann. Als aktualisierbares Mainline-Modul, PermissionController:

  • Interagiert mit dem Framework nur über stabile @SystemApi (keine @hide API-Nutzung).

  • Behandelt berechtigungsbezogene Absichten mit einer Priorität über 0.

  • Stellt einen Mechanismus bereit, mit dem OEMs die Gestaltung anpassen können.

  • Stellt Dienste bereit, an die sich das System und Apps binden können, einschließlich Rollenverwaltung, Widerruf von Berechtigungen und grundlegende Informationen zu Berechtigungen (für Einstellungen).

  • Unterstützt automatisches Widerrufen für ungenutzte Apps (neu in Android 11).

Automatisches Widerrufen für ungenutzte Apps

In Android 11 kann das PermissionsController-Modul automatisch Laufzeitberechtigungen für Apps widerrufen, die über einen längeren Zeitraum nicht verwendet wurden. Bei Apps, die auf SDK 30 oder höher abzielen, ist das automatische Widerrufen standardmäßig aktiviert, während bei Apps, die auf SDK 29 oder niedriger abzielen, das automatische Widerrufen standardmäßig deaktiviert ist. Wenn diese Option aktiviert ist, wirkt sich das automatische Widerrufen auf alle Laufzeitberechtigungen aus, schließt jedoch alle vorab gewährten Berechtigungen aus, einschließlich richtlinien- und systemfixierter Berechtigungen und Berechtigungen, die standardmäßig oder durch Rolle gewährt werden. Einzelheiten finden Sie unter Automatisches Zurücksetzen von Berechtigungen von nicht verwendeten Apps .

Paketformat

Das Modul PermissionController wird als APK-Datei ausgeliefert.

Modulgrenze

In Android 12 wird der Code des Berechtigungsmoduls von packages/apps/PermissionController (das platform/packages/apps/PackageInstaller Projekt) und frameworks/base/apex/permission (dies ist ein Unterverzeichnis des frameworks/base -Projekts) verschoben.

Die neue Projektstruktur für packages/modules/Permission wie folgt aus:

  • Dateien von frameworks/base/apex/permission
  • PermissionController-Dateien aus packages/apps/PermissionController

OEMs können die Beispielbefehle verwenden, um ihre Patches aus den ursprünglichen Projektverzeichnissen in das neue Projektverzeichnis zu verschieben.

Verschieben Sie einen Patch von frameworks/base/apex/permission

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

Verschieben Sie einen Patch aus Paketen/Apps/PermissionController

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

Anpassung

OEMs können das Berechtigungs-UI-Design (Farben, Ränder, Schriftarten und Drawables) mithilfe von Runtime Resource Overlays (RROS) anpassen .