PermissionController

Das Modul „PermissionController Mainline“ enthält Datenschutzrichtlinien und die Benutzeroberfläche für die Gewährung und Verwaltung von Berechtigungen (z. B. die Richtlinien und die Benutzeroberfläche für die Gewährung und Verwaltung von Berechtigungen).

Über PermissionController

Das PermissionController-Modul verarbeitet berechtigungsbezogene Benutzeroberflächen, Logik und Rollen, um Apps für bestimmte Zwecke Zugriff zu gewähren. Es steuert Folgendes:

  • Gewährung von Laufzeitberechtigungen (einschließlich Gewährung für System-Apps)
  • Laufzeit-Berechtigungsverwaltung (einschließlich Gruppierung von Berechtigungen)
  • Verfolgung der Laufzeitberechtigungsnutzung
  • Rollen

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

In Android 10 ist die Package Installer-App in Abschnitte unterteilt, um die Aktualisierung der Berechtigungslogik zu ermöglichen. Als aktualisierbares Mainline-Modul bietet PermissionController Folgendes:

  • Interagiert mit dem Framework nur über stabile @SystemApi (keine Verwendung der @hide-API).
  • Behandelt berechtigungsbezogene Absichten mit einer Priorität > 0.
  • Stellt einen Mechanismus bereit, mit dem OEMs das Theme anpassen können.
  • Stellt Dienste bereit, an die sich das System und Anwendungen binden können, einschließlich Rollenverwaltung, Berechtigungswiderruf und grundlegende Berechtigungsinformationen (für Einstellungen).
  • Unterstützt den automatischen Widerruf für nicht verwendete Apps (neu in Android 11).

In Android9 ist die Berechtigungskontrolle Teil von com.android.packageinstaller .

Automatischer Widerruf 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 der automatische Widerruf standardmäßig aktiviert , während bei Apps, die auf SDK 29 oder niedriger abzielen, der automatische Widerruf standardmäßig deaktiviert ist. Wenn die Funktion „Auto-Revoke“ aktiviert ist, wirkt sie sich auf alle Laufzeitberechtigungen aus, schließt jedoch alle vorab erteilten Berechtigungen aus, einschließlich richtlinien- und systemfester Berechtigungen und standardmäßig oder rollenweise gewährter Berechtigungen. Einzelheiten finden Sie unter Berechtigungen zum automatischen Zurücksetzen nicht verwendeter Apps .

Paketformat

Das Format des PermissionController-Moduls unterscheidet sich zwischen den Versionen.

  • In Android 11 oder höher liegt das PermissionController-Modul im APEX- Format vor und ist aktualisierbar. Der Paketname lautet com.google.android.permission .

  • In Android 10 liegt das PermissionController-Modul im APK-Format vor und ist nicht aktualisierbar. Der Paketname lautet com.google.android.permissioncontroller .

Modulgrenze

In Android 12 wird der Permission-Modulcode aus packages/apps/PermissionController (dem Projekt platform/packages/apps/PackageInstaller ) und frameworks/base/apex/permission (dies ist ein Unterverzeichnis des Projekts frameworks/base “) verschoben.

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

  • Dateien aus 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 aus „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 packets/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 Zeichenelemente) mithilfe von Runtime Resource Overlays (RROS) anpassen.