PermissionController

Moduł główny PermissionController zawiera polityki prywatności i interfejs użytkownika związany z przyznawaniem uprawnień i zarządzaniem nimi (np. polityki i interfejs użytkownika dotyczące przyznawania uprawnień i zarządzania nimi).

Informacje o PermissionController

Moduł PermissionController obsługuje interfejs, logikę i role związane z uprawnieniami, aby umożliwić aplikacjom dostęp do określonych celów. Kontroluje ona te elementy:

  • przyznawanie uprawnień w czasie działania aplikacji (w tym przyznawanie uprawnień aplikacjom systemowym);
  • Zarządzanie uprawnieniami w czasie działania (w tym grupowanie uprawnień)
  • Śledzenie wykorzystania uprawnień w czasie działania aplikacji
  • Role

Od Androida 12 klasy platformy i serwera systemowego dla Role są przenoszone do modułu, aby Role było w pełni modułowe.

W Androidzie 10 aplikacja Instalator pakietów jest podzielona na sekcje, co umożliwia aktualizowanie logiki uprawnień. Jako moduł magistrali, który można aktualizować, PermissionController:

  • Wchodzi w interakcje z platformą tylko za pomocą stabilnego interfejsu @SystemApi (nie używa interfejsu API @hide).
  • Obsługuje intencje związane z uprawnieniami o priorytecie > 0.
  • Udostępnia mechanizm umożliwiający producentom OEM dostosowywanie motywów.
  • Świadczy usługi, z którymi system i aplikacje mogą się łączyć, w tym zarządzanie rolami, odwoływanie uprawnień i podstawowe informacje o uprawnieniach (na potrzeby Ustawień).
  • Obsługuje automatyczne cofanie uprawnień nieużywanych aplikacji (nowość w Androidzie 11).

W Androidzie 9 kontrola uprawnień jest częścią com.android.packageinstaller.

Automatyczne usuwanie uprawnień nieużywanych aplikacji

W Androidzie 11 moduł PermissionsController może automatycznie cofać uprawnienia czasu działania w przypadku aplikacji, które nie były używane przez dłuższy czas. W przypadku aplikacji kierowanych na pakiet SDK 30 lub nowszy automatyczne cofanie uprawnień jest domyślnie włączone, a w przypadku aplikacji kierowanych na pakiet SDK 29 lub starszy jest domyślnie wyłączone. Gdy automatyczne cofanie jest włączone, dotyczy ono wszystkich uprawnień w czasie działania, ale nie obejmuje uprawnień przyznanych wcześniej, w tym uprawnień ustalonych przez zasady i system oraz uprawnień przyznanych domyślnie lub przez rolę. Więcej informacji znajdziesz w artykule Automatyczne resetowanie uprawnień nieużywanych aplikacji.

Format pakietu

Format modułu PermissionController różni się w zależności od wersji.

  • W Androidzie 11 lub nowszym moduł PermissionController jest w formacie APEX i można go aktualizować. Nazwa pakietu to com.google.android.permission.

  • W Androidzie 10 moduł PermissionController jest w formacie APK i nie można go aktualizować. Nazwa pakietu to com.google.android.permissioncontroller.

Granica modułu

W Androidzie 12 kod modułu Permission został przeniesiony z packages/apps/PermissionController (projekt platform/packages/apps/PackageInstaller) i frameworks/base/apex/permission (podkatalog projektu frameworks/base).

Nowa struktura projektu dla packages/modules/Permission jest taka:

  • Pliki z: frameworks/base/apex/permission
  • Pliki PermissionController z urządzenia packages/apps/PermissionController

Producenci OEM mogą używać przykładowych poleceń, aby przenieść poprawki z oryginalnych katalogów projektów do nowego katalogu projektu.

Przenoszenie poprawki z katalogu 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

Przenoszenie poprawki z pakietów/aplikacji/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

Dostosowywanie

Producenci OEM mogą dostosowywać motyw interfejsu uprawnień (kolory, marginesy, czcionki i elementy rysunkowe) za pomocą nakładek na zasoby środowiska wykonawczego (RRO).