Controlador de permisos

El módulo PermissionController Mainline contiene políticas de privacidad y la interfaz de usuario relacionada con la concesión y gestión de permisos (por ejemplo, las políticas y la interfaz de usuario para la concesión y gestión de permisos).

Acerca de PermissionController

El módulo PermissionController maneja la interfaz de usuario, la lógica y las funciones relacionadas con los permisos para permitir el acceso de las aplicaciones para fines específicos. Controla lo siguiente:

  • Otorgamiento de permisos de tiempo de ejecución (incluido el otorgamiento a aplicaciones del sistema)
  • Gestión de permisos de tiempo de ejecución (incluida la agrupación de permisos)
  • Seguimiento del uso de permisos de tiempo de ejecución
  • roles

A partir de Android 12, las clases de servidores del marco y del sistema para el Role se trasladan al módulo para que el Role sea completamente modular.

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

  • Interactúa con el marco solo a través de @SystemApi estable (sin uso de API @hide).
  • Maneja intenciones relacionadas con permisos con prioridad > 0.
  • Expone un mecanismo para permitir que los OEM personalicen temas.
  • Proporciona servicios a los que se pueden vincular el sistema y las aplicaciones, incluida la gestión de funciones, la revocación de permisos y la información básica de permisos (para Configuración).
  • Admite la revocación automática de aplicaciones no utilizadas (nuevo en Android 11).

En Android9, el control de permisos es parte de com.google.android.packageinstaller .

Revocación automática para aplicaciones no utilizadas

En Android 11, el módulo PermissionsController puede revocar automáticamente los permisos de tiempo de ejecución para las aplicaciones que no se han utilizado durante un período prolongado. Las aplicaciones que tienen como objetivo el SDK 30 o superior tienen la revocación automática habilitada de forma predeterminada, mientras que las aplicaciones que tienen como objetivo el SDK 29 o inferior tienen la revocación automática desactivada de forma predeterminada. Cuando está habilitada, la revocación automática afecta a todos los permisos de tiempo de ejecución, pero excluye todos los permisos otorgados previamente, incluidos los permisos fijados por políticas y sistemas y los permisos otorgados de forma predeterminada o por rol. Para obtener más información, consulte Permisos de restablecimiento automático de aplicaciones no utilizadas .

formato de paquete

El formato del módulo PermissionController difiere entre versiones.

  • En Android 11 o superior, el módulo PermissionController está en formato APEX y es actualizable. 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 Permiso se mueve 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 PermissionController de packages/apps/PermissionController

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

Mover un parche desde 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

Mover un parche desde paquetes/aplicaciones/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 interfaz de usuario de permisos (colores, márgenes, fuentes y elementos de diseño) utilizando superposiciones de recursos de tiempo de ejecución (RROS) .