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 o PermissionController
O módulo PermissionController lida com a interface do usuário, a lógica e as funções relacionadas à permissão 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
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.
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 via @SystemApi estável (sem uso de API @hide).
- Lida com intents relacionadas a permissões 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çã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).
No Android9, o controle de permissão faz parte de com.google.android.packageinstaller
.
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 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 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) .