El módulo PermissionController Mainline contiene políticas de privacidad y la IU relacionada con la concesión y administración de permisos (por ejemplo, las políticas y la IU para otorgar y administrar permisos).
Información 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 fines específicos. Controla lo siguiente:
- Otorgamiento de permisos de tiempo de ejecución (incluidos los permisos para apps del sistema)
- Administración de permisos de tiempo de ejecución (incluida la agrupación de permisos)
- Seguimiento del uso de permisos de tiempo de ejecución
- Funciones
A partir de Android 12, las clases del servidor del framework y del sistema para Role
se mueven al módulo para que Role
sea completamente modular.
En Android 10, la app de instalador de paquetes se divide en secciones para permitir que se actualice la lógica de permisos. Como módulo de línea principal que se puede actualizar, PermissionController:
- Interactúa con el framework solo a través de @SystemApi estable (sin uso de la API de @hide).
- Controla intents relacionados con permisos con prioridad > 0.
- Expone un mecanismo para permitir que los OEM personalicen los temas.
- Proporciona servicios a los que se pueden vincular el sistema y las aplicaciones, incluida la administració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 apps que no se usan (novedad de Android 11).
En Android9, 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 de las apps que no se hayan usado durante un período prolongado. Las apps que se orientan al SDK 30 o versiones posteriores tienen la revocación automática habilitada de forma predeterminada, mientras que las apps que se orientan al SDK 29 o versiones anteriores tienen la revocación automática inhabilitada de forma predeterminada. Cuando está habilitada, la revocación automática afecta a todos los permisos del tiempo de ejecución, pero exime a todos los permisos otorgados previamente, incluidos los permisos fijos de la política y del sistema, y los permisos otorgados de forma predeterminada o por rol. Para obtener más detalles, consulta Cómo restablecer automáticamente los permisos de las apps que no se usan.
Formato del paquete
El formato del módulo PermissionController difiere 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 de permisos se mueve de packages/apps/PermissionController
(el proyecto platform/packages/apps/PackageInstaller
) y frameworks/base/apex/permission
(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 OEMs pueden usar los comandos de muestra para mover 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 OEMs pueden personalizar el tema de la IU de permisos (colores, márgenes, fuentes y elementos de diseño) con superposiciones de recursos de tiempo de ejecución (RROS).