Контроллер разрешений

Модуль PermissionController позволяет обновлять политики конфиденциальности и элементы пользовательского интерфейса (например, политики и пользовательский интерфейс для предоставления разрешений и управления ими).

Начиная с Android 12 классы платформы и системного сервера для Role перемещены в модуль, чтобы сделать Role полностью модульной.

О PermissionController

APK com.google.android.permissioncontroller обрабатывает пользовательский интерфейс, логику и роли, связанные с разрешениями, чтобы разрешить доступ приложениям для определенных целей. Он контролирует следующее:

  • Предоставление разрешений во время выполнения (включая предоставление системным приложениям)

  • Управление разрешениями во время выполнения (включая группировку разрешений)

  • Отслеживание использования разрешений во время выполнения

  • Роли

В Android 9 такие разрешения были частью com.google.android.packageinstaller . В Android 10 приложение Package Installer разделено на разделы, позволяющие обновлять логику разрешений. Как обновляемый модуль Mainline, PermissionController:

  • Взаимодействует с фреймворком только через стабильный @SystemApi (без использования @hide API).

  • Обрабатывает намерения, связанные с разрешениями, с приоритетом выше 0.

  • Предоставляет механизм, позволяющий OEM-производителям настраивать темы.

  • Предоставляет службы, к которым могут привязываться система и приложения, включая управление ролями, отзыв разрешений и базовую информацию о разрешениях (для настроек).

  • Поддерживает автоматический отзыв неиспользуемых приложений (новое в Android 11).

Автоматический отзыв для неиспользуемых приложений

В Android 11 модуль PermissionsController может автоматически отзывать разрешения во время выполнения для приложений, которые не использовались в течение длительного периода времени. В приложениях, предназначенных для SDK 30 или более поздней версии, автоматический отзыв включен по умолчанию, а в приложениях, предназначенных для SDK 29 или более ранней версии, автоматический отзыв отключен по умолчанию. Когда функция автоматического отзыва включена, она влияет на все разрешения среды выполнения, но исключает все предварительно предоставленные разрешения, включая разрешения, фиксированные политикой и системой, а также разрешения, предоставленные по умолчанию или по роли. Дополнительные сведения см. в разделе Автоматический сброс разрешений для неиспользуемых приложений .

Формат пакета

Модуль PermissionController поставляется в виде файла APK.

Граница модуля

В Android 12 код модуля Permission перемещен из packages/apps/PermissionController (проект platform/packages/apps/PackageInstaller ) и frameworks/base/apex/permission (это подкаталог проекта frameworks/base ).

Новая структура проекта для packages/modules/Permission выглядит следующим образом:

  • Файлы из frameworks/base/apex/permission
  • Файлы PermissionController из packages/apps/PermissionController

OEM-производители могут использовать примеры команд для перемещения своих исправлений из исходных каталогов проекта в новый каталог проекта.

Переместите патч из 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

Переместите патч из пакетов/приложений/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

Настройка

OEM-производители могут настраивать тему пользовательского интерфейса разрешений (цвета, поля, шрифты и элементы рисования) с помощью наложений ресурсов времени выполнения (RROS) .