PermissionController

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) .