O módulo principal PermissionController contém políticas de privacidade e a interface relacionada à concessão e ao gerenciamento de permissões (por exemplo, as políticas e a interface para conceder e gerenciar permissões).
Sobre o PermissionController
O módulo PermissionController processa a interface, a lógica e as funções relacionadas a permissões para permitir o acesso de apps para fins específicos. Ele controla o seguinte:
- Concessão de permissão de execução (incluindo concessão a apps do sistema)
- Gerenciamento de permissões de execução (incluindo agrupamento de permissões)
- Rastreamento do uso de permissões de execução
- Funções
A partir do Android 12, as classes de framework e servidor do sistema
para Role
são movidas para o módulo para tornar Role
completamente modular.
No Android 10, o app Instalador de pacotes é dividido em seções para permitir a atualização da lógica de permissões. Como um módulo principal atualizável, o PermissionController:
- Interage com a estrutura apenas por @SystemApi estável (sem uso da API @hide).
- Processa intents relacionados a permissões com prioridade > 0.
- Expõe um mecanismo para permitir que os OEMs personalizem a estilização.
- Fornece serviços aos quais o sistema e os aplicativos podem se vincular, incluindo gerenciamento de papéis, revogação de permissões e informações básicas de permissão (para Configurações).
- Compatível com a revogação automática de apps não usados (novidade no Android 11).
No Android 9, o controle de permissões faz parte de
com.android.packageinstaller
.
Revogação automática para apps não usados
No Android 11, o módulo PermissionsController pode revogar automaticamente as permissões de execução para apps que não são usados por um período prolongado. Os apps destinados ao SDK 30 ou mais recente têm a revogação automática ativada por padrão, enquanto os apps destinados ao SDK 29 ou anterior têm a revogação automática desativada por padrão. Quando ativada, a revogação automática afeta todas as permissões de execução, mas isenta todas as permissões concedidas previamente, incluindo permissões fixas pela política e pelo sistema, além de permissões concedidas por padrão ou por função. Para mais detalhes, consulte Redefinir automaticamente permissões de apps não utilizados.
Formato do pacote
O formato do módulo PermissionController varia entre as versões.
No Android 11 ou mais recente, o módulo PermissionController está no formato APEX e pode ser atualizado. O nome do pacote é
com.google.android.permission
.No Android 10, o módulo PermissionController está no formato APK e não pode ser atualizado. 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
(um subdiretório do projeto
frameworks/base
).
A nova estrutura de projeto para packages/modules/Permission
é a seguinte:
- Arquivos de
frameworks/base/apex/permission
- Arquivos do PermissionController de
packages/apps/PermissionController
Os OEMs podem usar os comandos de exemplo para ajudar a mover os patches dos diretórios de projeto originais para o novo diretório de projeto.
Mover 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
Mover 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
Personalização
Os OEMs podem personalizar o tema da interface de permissões (cores, margens, fontes e elementos gráficos) usando substituições de recursos de tempo de execução (RROs).