As permissões do Android fornecem controles que aumentam a conscientização do usuário e limitam o acesso de um aplicativo a dados confidenciais. A configuração de permissões no Android 8.0 e inferior inclui a lista de permissões, sem a qual os aplicativos privilegiados são desabilitados, mesmo que estejam no caminho priv-app . No Android 9 e superior, um dispositivo que tenta usar aplicativos que não estão devidamente autorizados não inicializa.
O Android 10 introduziu o conceito de role , um nome exclusivo dentro do sistema associado a determinados requisitos e privilégios. Atribua funções a aplicativos para conceder a eles permissões para uma finalidade específica e configure funções padrão usando recursos de configuração de plataforma.
As proteções aumentadas contra Apps Potencialmente Nocivos (PHAs) melhoram
- Transparência em comportamentos de aplicativos potencialmente prejudiciais.
- Controle do usuário sobre o comportamento do aplicativo.
- Discrição dos desenvolvedores de aplicativos ao usar dados privados, protegidos por permissões.
Instalação e permissão do pacote
No Android 9 e inferior, as funcionalidades de instalação do pacote e controle de permissão estavam contidas no pacote PackageInstaller ( //packages/apps/PackageInstaller ). No Android 10 e superior, a funcionalidade de controle de permissão reside em um pacote separado, PermissionController ( //packages/apps/PermissionController ). A Figura 1 ilustra onde os dois pacotes residem no Android 10.

Listas de permissões e acesso
No Android 6.0 e superior, os aplicativos solicitam acesso a permissões perigosas em tempo de execução . O Android 10 adiciona permissões de tempo de execução de reconhecimento de atividade (AR), que solicitam ao usuário que modifique ou permita permissões perigosas.
O Android 8.0 exigia que você permitisse explicitamente os aplicativos privilegiados nos arquivos XML de configuração do sistema no diretório /etc/permissions . No Android 9 e superior, as permissões privilegiadas devem ser permitidas ou o dispositivo não pode inicializar.
Para limitar a visibilidade da API interna e impedir que os aplicativos acessem acidentalmente as bibliotecas da plataforma, o Android 7.0 introduziu os namespaces para bibliotecas nativas . Isso separa as bibliotecas do sistema das bibliotecas de aplicativos e os fabricantes de dispositivos podem adicionar suas próprias bibliotecas nativas.
Os aplicativos do Android 10 devem ter permissões de assinatura e consentimento do usuário para acessar o conteúdo da tela de um dispositivo . Aplicativos privilegiados que contam com a funcionalidade de captura silenciosa, como fazer uma captura de tela, devem usar a classe MediaProjection .
Transparência e privacidade
No Android 6.0 e superior, um endereço MAC de fábrica do dispositivo é protegido contra acesso por provedores de serviços Wi-Fi e analisadores de pacotes. Restrições adicionais a partir do Android 10 limitam os aplicativos de acessar os identificadores de dispositivo (IDs) imutáveis, a menos que estejam na lista de permissões para permissões privilegiadas . (A seção Conectividade fornece uma discussão relacionada sobre Identificadores de dispositivo , pois isso afeta as operadoras.)
No Android 9 e inferior, os usuários fazem escolhas persistentes ao conceder acesso de localização a aplicativos. A partir do Android 10, um recurso de permissões de localização tristate oferece aos usuários três opções para permitir o acesso do aplicativo à localização de um dispositivo. Esses requisitos de permissão são aplicados a aplicativos no Android 10, independentemente do SDK de destino.
Configure permissões para outros recursos de transparência e privacidade a partir do Android 10
- O lembrete de localização de acesso em segundo plano mostra aos usuários quando um aplicativo acessa a localização do dispositivo usando a permissão
ACCESS_FINE_LOCATIONem segundo plano. - Os dados relacionados à afinidade de contatos, gerenciados pelo componente Provedor de contatos, são acessados de forma diferente: os aplicativos não podem gravar ou ler os dados de afinidades de contato no banco de dados. Isso afeta as APIs relacionadas ao chamador .
Configurações simplificadas
As configurações de permissões foram simplificadas para o Android 6.0 e superior.
- Os recursos de ambiente para serviços iniciados pelo
initmantêm todos os aspectos da configuração do serviço em um único arquivo.rc. Ao definir recursos para serviços não iniciados peloinit, configure os recursos do sistema de arquivos usandofs_config.cem vez disso. - O Android 7.xe versões anteriores estendem o mecanismo de IDs do Android (AIDs), usando um arquivo
android_filesystem_config.hespecífico do dispositivo para especificar os recursos do sistema de arquivos e/ou AIDs personalizados do fabricante do dispositivo. O Android 8.0 e superior oferece suporte a um novo método para estender os recursos do sistema de arquivos . - No Android 8.0, o manuseio de comandos USB saiu dos scripts de
initespecíficos do dispositivo (uma substituição para camadas HAL) e foi para um daemon USB nativo. A interface USB HAL deve ser implementada em todos os dispositivos iniciados no Android 8.0 e superior.