O módulo PermissionController habilita políticas de privacidade e elementos de interface do usuário atualizáveis (por exemplo, as políticas e a interface do usuário sobre concessão e gerenciamento de permissõ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 o Role
completamente modular.
Sobre o PermissionController
O APK com.google.android.permissioncontroller
lida com IU, lógica e funções relacionadas a permissões para permitir o 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
No Android 9, essas permissões faziam parte de com.google.android.packageinstaller
. 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 intents relacionadas a permissões com prioridade acima de 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ção, 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).
Revogação automática para aplicativos não utilizados
No Android 11, o módulo PermissionsController pode revogar automaticamente as 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 habilitada por padrão, enquanto os aplicativos direcionados ao SDK 29 ou inferior têm a revogação automática desativada por padrão. Quando habilitada, 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 corrigidas por política e sistema e permissões concedidas por padrão ou por função. Para obter detalhes, consulte Permissões de redefinição automática de aplicativos não utilizados .
Formato do pacote
O módulo PermissionController é entregue como um arquivo APK.
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 exemplo para ajudar a mover seus patches dos diretórios do projeto original para o novo diretório do 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
Costumização
Os OEMs podem personalizar o tema da interface do usuário de permissões (cores, margens, fontes e drawables) usando sobreposições de recursos de tempo de execução (RROS) .