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 lida com interface, lógica e papéis relacionados 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 das 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).
  • Oferece suporte à revogação automática para apps não usados (novo no Android) 11).

No Android9, o controle de permissões faz parte do 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 de apps que não foram usados por um por um longo período. 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 todo o tempo de execução do Google, mas isenta todas as permissões pré-concedidas, incluindo permissões permissões fixas pelo sistema e permissões concedidas por padrão ou por papel. 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 ou versões mais recentes, o módulo PermissionController está 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 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 exemplos de comandos para ajudar a mover os 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 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).