PermissionController

O módulo PermissionController Mainline contém Políticas de Privacidade e o interface relacionada à concessão e ao gerenciamento de permissões (por exemplo, as políticas e interface do usuário 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. Ela controla o seguinte:

  • Concessão de permissões de tempo de execução (incluindo a concessão de apps do sistema)
  • Gerenciamento de permissões de execução (incluindo agrupamento de permissões)
  • Rastreamento de uso de permissões de execução
  • Papéis

A partir do Android 12, o framework e o servidor do sistema turmas para Role são movidos para o módulo para tornar o Role completamente modular.

No Android 10, o app Package Installer é dividido em seções para permitir que a lógica de permissões seja atualizada. Como módulo Mainline atualizável, PermissionController:

  • Interage com o framework somente por meio de uma @SystemApi estável (sem uso da API @hide).
  • Processa intents relacionadas a permissões com prioridade > 0.
  • Foi apresentado um mecanismo para permitir que OEMs personalizem temas.
  • Fornecem 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ões (por Configurações).
  • Suporte à revogação automática de apps não usados (novo 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 revogação automática ativada por padrão, enquanto os apps destinados ao SDK 29 ou anterior têm revogação automática desativado por padrão. Quando ativada, a revogação automática afeta todas as permissões de execução, mas isenta todas as permissões pré-concedidas, incluindo permissões fixadas por política e pelo sistema, além de permissões concedidas por padrão ou por função. Para mais detalhes, consulte Redefinir automaticamente as permissões apps.

Formato do pacote

O formato do módulo PermissionController é diferente entre as versões.

  • No Android 11 e versões mais recentes, 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 está atualizável. O nome do pacote é com.google.android.permissioncontroller.

Limite do módulo

No Android 12, a permissão o código do módulo é movido de packages/apps/PermissionController. (o projeto platform/packages/apps/PackageInstaller) e frameworks/base/apex/permission (é um subdiretório do 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 mover os patches dos diretórios de projeto originais para o novo diretório.

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 pacotes/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

OEMs podem personalizar o tema de permissões da interface (cores, margens, fontes e drawables) usando sobreposições de recursos no ambiente de execução (RROS) (link em inglês).