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 conceder y gestionar permisos).
Acerca del controlador de permisos
El módulo PermissionController maneja la interfaz de usuario, la lógica y los roles relacionados con los permisos para permitir el acceso a aplicaciones para fines específicos. Controla lo siguiente:
- Concesión de permisos en tiempo de ejecución (incluida la concesión a aplicaciones del sistema)
- Gestión de permisos en tiempo de ejecución (incluida la agrupación de permisos)
- Seguimiento del uso de permisos en tiempo de ejecución
- Roles
A partir de Android 12, las clases de marco y servidor del sistema para Role
se trasladan al módulo para que 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 principal 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 a los OEM personalizar la temática.
- Proporciona servicios a los que el sistema y las aplicaciones pueden vincularse, 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.android.packageinstaller
.
Revocación automática de aplicaciones no utilizadas
En Android 11, el módulo PermissionsController puede revocar automáticamente los permisos de ejecución de aplicaciones que no se han utilizado durante un período prolongado. Las aplicaciones orientadas al SDK 30 o superior tienen la revocación automática habilitada de forma predeterminada, mientras que las aplicaciones orientadas al SDK 29 o inferior tienen la revocación automática deshabilitada de forma predeterminada. Cuando está habilitada, la revocación automática afecta a todos los permisos de tiempo de ejecución, pero exime todos los permisos otorgados previamente, incluidos los permisos fijados por políticas y sistemas y los permisos otorgados de forma predeterminada o por función. Para obtener más información, consulte Restablecer automáticamente los permisos de aplicaciones no utilizadas .
Formato de paquete
El formato del módulo PermissionController difiere según la versión.
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 utilizar los comandos de muestra para ayudar a mover sus parches de 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) mediante superposiciones de recursos en tiempo de ejecución (RROS) .