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) .