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:

  • Gewährung von Laufzeitberechtigungen (einschließlich des Gewährens von System-Apps)
  • Verwaltung von Laufzeitberechtigungen (einschließlich der Gruppierung von Berechtigungen)
  • Nutzungs-Tracking der Laufzeitberechtigungen
  • Rollen

Ab Android 12 werden das Framework und der Systemserver Kurse für Role werden in das Modul verschoben, damit Role vollständig modular wird.

Unter Android 10 ist die App „Paketmanager“ in Abschnitte unterteilt, damit die Berechtigungslogik aktualisiert werden kann. Als aktualisierbares Mainline-Modul, PermissionController:

  • Interagiert nur über eine stabile @SystemApi mit dem Framework (keine @hide-API-Nutzung).
  • Verarbeitet berechtigungsbezogene Intents mit Priorität > 0.
  • Bietet OEMs einen Mechanismus zum Anpassen der Themen.
  • Stellt Dienste bereit, an die sich das System und die Anwendungen binden können, einschließlich Rollenverwaltung, Widerruf von Berechtigungen und grundlegende Berechtigungsinformationen (für Einstellungen).
  • Unterstützt die automatische Aufhebung nicht verwendeter 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 seit einer bestimmten Anzahl von Tagen nicht verwendet wurden, automatisch widerrufen. über einen längeren Zeitraum verfügbar sind. Apps, die auf SDK 30 oder höher ausgerichtet sind, werden automatisch widerrufen aktiviert, bei Apps, die auf SDK 29 oder niedriger ausgerichtet sind, hingegen ist standardmäßig deaktiviert. Wenn diese Option aktiviert ist, wirkt sich der automatische Widerruf auf die gesamte Laufzeit aus gewährt, schließt aber alle vorab gewährten Berechtigungen aus, einschließlich Richtlinien- und systemdefinierte Berechtigungen und Berechtigungen, die standardmäßig oder pro Rolle gewährt werden. Weitere Informationen finden Sie unter Berechtigungen von nicht verwendeten Apps automatisch zurücksetzen.

Paketformat

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

  • Ab Android 11 befindet sich das PermissionController-Modul APEX-Format und aktualisierbar ist. 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 ist die Berechtigung Modulcode wurde aus packages/apps/PermissionController verschoben (das Projekt platform/packages/apps/PackageInstaller) und frameworks/base/apex/permission (dies ist ein Unterverzeichnis von Projekt frameworks/base).

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 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 UI-Design für Berechtigungen (Farben, Ränder, Schriftarten und Drawables) mithilfe von Laufzeitressourcen-Overlays (RROS).