O módulo PermissionController Mainline contém políticas de privacidade e a interface do usuário relacionadas à concessão e gerenciamento de permissões (por exemplo, as políticas e a interface do usuário para concessão e gerenciamento de permissões).
Sobre PermissionController
O módulo PermissionController lida com UI, lógica e funções relacionadas a permissões para permitir acesso a aplicativos para fins específicos. Ele controla o seguinte:
- Concessão de permissão de tempo de execução (incluindo concessão a aplicativos do sistema)
- Gerenciamento de permissões de tempo de execução (incluindo agrupamento de permissões)
- Rastreamento de uso de permissão de tempo de execução
- Funções
A partir do Android 12, a estrutura e as classes de servidor do sistema para Role
são movidas para o módulo para tornar Role
completamente modular.
No Android 10, o aplicativo Package Installer é dividido em seções para permitir que a lógica de permissões seja atualizada. Como um módulo Mainline atualizável, PermissionController:
- Interage com a estrutura apenas por meio de @SystemApi estável (sem uso de API @hide).
- Lida com intenções relacionadas à permissão com prioridade > 0.
- Expõe um mecanismo para permitir que OEMs personalizem temas.
- Fornece serviços aos quais o sistema e os aplicativos podem se vincular, incluindo gerenciamento de funções, revogação de permissão e informações básicas de permissão (para Configurações).
- Suporta revogação automática para aplicativos não utilizados (novo no Android 11).
No Android9, o controle de permissão faz parte de com.android.packageinstaller
.
Revogação automática para aplicativos não utilizados
No Android 11, o módulo PermissionsController pode revogar automaticamente permissões de tempo de execução para aplicativos que não foram usados por um longo período de tempo. Os aplicativos direcionados ao SDK 30 ou superior têm a revogação automática ativada por padrão, enquanto os aplicativos direcionados ao SDK 29 ou inferior têm a revogação automática desativada por padrão. Quando ativada, a revogação automática afeta todas as permissões de tempo de execução, mas isenta todas as permissões pré-concedidas, incluindo permissões fixas por política e sistema e permissões concedidas por padrão ou por função. Para obter detalhes, consulte Redefinir automaticamente as permissões de aplicativos não utilizados .
Formato do pacote
O formato do módulo PermissionController difere entre as versões.
No Android 11 ou superior, o módulo PermissionController está no formato APEX e é atualizável. O nome do pacote é
com.google.android.permission
.No Android 10, o módulo PermissionController está no formato APK e não é atualizável. O nome do pacote é
com.google.android.permissioncontroller
.
Limite do módulo
No Android 12, o código do módulo Permission é movido de packages/apps/PermissionController
(o projeto platform/packages/apps/PackageInstaller
) e frameworks/base/apex/permission
(este é um subdiretório do projeto frameworks/base
).
A nova estrutura do projeto para packages/modules/Permission
é a seguinte:
- Arquivos de
frameworks/base/apex/permission
- Arquivos PermissionController de
packages/apps/PermissionController
Os OEMs podem usar os comandos de amostra para ajudar a mover seus patches dos diretórios originais do projeto para o novo diretório do projeto.
Mova um patch 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
Mova um patch 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
Costumização
Os OEMs podem personalizar o tema da IU de permissões (cores, margens, fontes e drawables) usando sobreposições de recursos de tempo de execução (RROS) .