PermissionController

El módulo de Mainline de PermissionController contiene políticas de privacidad y la IU relacionada con el otorgamiento y la administración de permisos (por ejemplo, las políticas y la IU para otorgar y administrar permisos).

Acerca de PermissionController

El módulo PermissionController controla la IU, la lógica y los roles relacionados con los permisos para permitir el acceso de las apps con un propósito específico. Controla lo siguiente:

  • Otorgamiento de permisos de tiempo de ejecución (incluido el otorgamiento a apps del sistema)
  • Administración de permisos de tiempo de ejecución (incluido el agrupamiento de permisos)
  • Seguimiento del uso de permisos de tiempo de ejecución
  • Funciones

A partir de Android 12, las clases del framework y del servidor del sistema para Role se mueven al módulo para que Role sea completamente modular.

En Android 10, la app de Package Installer se divide en secciones para permitir que se actualice la lógica de permisos. Como módulo de Mainline actualizable, PermissionController hace lo siguiente:

  • Interactúa con el framework solo a través de @SystemApi estables (no se usa la API de @hide).
  • Controla intents relacionados con permisos con prioridad > 0.
  • Expone un mecanismo para que los OEM puedan personalizar la aplicación de temas.
  • Proporciona servicios a los que el sistema y las aplicaciones pueden vincularse, incluida la administración de roles, la revocación de permisos y la información básica de permisos (para Configuración).
  • Admite la revocación automática de permisos para las apps que no se usan (novedad en Android 11).

En Android 9, el control de permisos forma parte de com.android.packageinstaller.

Revocación automática para apps que no se usan

En Android 11, el módulo PermissionsController puede revocar automáticamente los permisos de tiempo de ejecución para las apps que no se hayan usado durante un período prolongado. Las apps que se segmentan para el SDK 30 o versiones posteriores tienen la revocación automática habilitada de forma predeterminada, mientras que las apps que se segmentan para el SDK 29 o versiones anteriores tienen la revocación automática inhabilitada de forma predeterminada. Cuando se habilita, la revocación automática afecta a todos los permisos de tiempo de ejecución, pero exime a todos los permisos otorgados previamente, incluidos los permisos fijos del sistema y de la política, y los permisos otorgados de forma predeterminada o por rol. Para obtener más detalles, consulta Permisos de restablecimiento automático de apps que no se usan.

Formato del paquete

El formato del módulo PermissionController varía entre las versiones.

  • En Android 11 o versiones posteriores, el módulo PermissionController está en formato APEX y se puede actualizar. El nombre del paquete es com.google.android.permission.

  • En Android 10, el módulo PermissionController está en formato APK y no se puede actualizar. El nombre del paquete es com.google.android.permissioncontroller.

Límite del módulo

En Android 12, el código del módulo Permission se trasladó de packages/apps/PermissionController (el proyecto platform/packages/apps/PackageInstaller) y frameworks/base/apex/permission (este es un subdirectorio del proyecto frameworks/base).

La nueva estructura del proyecto para packages/modules/Permission es la siguiente:

  • Archivos de frameworks/base/apex/permission
  • Archivos de PermissionController de packages/apps/PermissionController

Los OEM pueden usar los comandos de muestra para ayudar a trasladar sus parches de los directorios del proyecto original al directorio del proyecto nuevo.

Cómo mover un parche de 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

Mueve un parche de packages/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

Personalización

Los OEM pueden personalizar el tema de la IU de permisos (colores, márgenes, fuentes y elementos gráficos) con superposiciones de recursos de tiempo de ejecución (RRO).