Alterações de privacidade no Android 10

O Android 10 (nível 29 da API) apresenta vários recursos e mudanças de comportamento para proteger melhor a privacidade dos usuários. Essas mudanças ampliam a transparência e o controle que os usuários têm sobre os próprios dados e os recursos que eles dão aos apps. Esses recursos podem fazer com que comportamentos ou dados específicos de que seu app depende se comportem de maneira diferente em comparação com versões mais antigas da plataforma. Os impactos no seu app serão mínimos se ele seguir as práticas recomendadas atuais para processar dados do usuário.

Esta página lista um resumo de cada alteração.

Principais mudanças

Esta seção inclui as principais mudanças no Android 10 relacionadas à privacidade.

Acesso ao armazenamento externo com escopo definido para arquivos e mídia do app

Por padrão, os apps direcionados ao Android 10 e versões mais recentes recebem acesso com escopo ao armazenamento externo ou armazenamento com escopo. Esses apps podem ver os seguintes tipos de arquivos em um dispositivo de armazenamento externo sem precisar solicitar permissões de usuário relacionadas ao armazenamento:

Para saber mais sobre o armazenamento com escopo, bem como compartilhar, acessar e modificar arquivos salvos em dispositivos de armazenamento externo, consulte os guias sobre como gerenciar arquivos no armazenamento externo e acessar e modificar arquivos de mídia.

O acesso ao local do dispositivo em segundo plano requer permissão

Para oferecer mais controle aos usuários sobre o acesso de um app às informações de localização, o Android 10 apresenta a permissão ACCESS_BACKGROUND_LOCATION.

Ao contrário das permissões ACCESS_FINE_LOCATION e ACCESS_COARSE_LOCATION, a permissão ACCESS_BACKGROUND_LOCATION só afeta o acesso de um app à localização quando ele é executado em segundo plano. Um app é considerado como acessando a localização em segundo plano, a menos que uma das seguintes condições seja atendida:

  • Uma atividade pertencente ao app está visível.
  • O app está executando um serviço em primeiro plano que declarou um tipo de serviço em primeiro plano de location.

    Para declarar o tipo de serviço em primeiro plano de um serviço no app, defina o targetSdkVersion ou o compileSdkVersion do app como 29 ou mais recente. Saiba mais sobre como os serviços em primeiro plano podem continuar ações iniciadas pelo usuário que exigem acesso à localização.

Se o app criar e monitorar fronteiras geográficas virtuais e for destinado ao Android 10 (nível 29 da API) ou versões mais recentes, será necessário declarar a permissão ACCESS_BACKGROUND_LOCATION.

Acesso concedido automaticamente ao direcionar para o Android 9 ou versões anteriores

Se o app for executado no Android 10 ou versões mais recentes, mas for destinado ao Android 9 (nível 28 da API) ou versões anteriores, a plataforma vai aplicar o seguinte comportamento:

  • Se o app declarar um elemento <uses-permission> para ACCESS_FINE_LOCATION ou ACCESS_COARSE_LOCATION, o sistema vai adicionar automaticamente um elemento <uses-permission> para ACCESS_BACKGROUND_LOCATION durante a instalação.
  • Se o app solicitar ACCESS_FINE_LOCATION ou ACCESS_COARSE_LOCATION, o sistema vai adicionar automaticamente ACCESS_BACKGROUND_LOCATION à solicitação.

Acesso quando o dispositivo faz upgrade para o Android 10

Se um usuário conceder ao app acesso à localização do dispositivo, seja ACCESS_COARSE_LOCATION ou ACCESS_FINE_LOCATION, e depois fizer upgrade do dispositivo do Android 9 para o Android 10, o sistema vai atualizar automaticamente o conjunto de permissões baseadas em localização concedidas ao app. O conjunto de permissões que o app recebe após o upgrade depende da versão do SDK de destino e das permissões definidas, conforme mostrado na tabela a seguir:

Tabela 1. Mudanças no estado da permissão de localização após o upgrade do dispositivo para o Android 10

Versão da plataforma de destino Permissão aproximada ou precisa
concedida?
A permissão em segundo plano
está definida no manifesto?
Estado de permissão padrão atualizado
Android 10 Sim Sim Acesso em primeiro e segundo plano
Android 10 Sim Não Apenas acesso em primeiro plano
Android 10 Não (Ignorado pelo sistema) Sem acesso
Android 9 ou anterior Sim Adicionado automaticamente pelo sistema no momento do upgrade do dispositivo Acesso em primeiro e segundo plano
Android 9 ou anterior Não (Ignorado pelo sistema) Sem acesso

O usuário pode mudar esse nível de acesso mesmo depois que o sistema atualiza automaticamente o acesso do app à localização do dispositivo. Por exemplo, o usuário pode reduzir o acesso do app apenas ao primeiro plano ou revogar o acesso por completo. Antes de tentar acessar a localização do dispositivo, principalmente em um serviço em primeiro plano, o app precisa verificar se o usuário ainda permite que ele receba essas informações de localização.

Acesso revogado ao atualizar o nível desejado da API em dispositivos Android 10

Considere o caso em que o app já está instalado em um dispositivo com o Android 10. Se você atualizar o app para segmentar o Android 10 nessa situação, o dispositivo vai revogar a permissão ACCESS_BACKGROUND_LOCATION.

Para mais informações sobre como recuperar a localização do dispositivo enquanto o app está em segundo plano, consulte o guia sobre como receber atualizações periódicas de localização.

Restrições para o início de atividades em segundo plano

No Android 10 e versões mais recentes, o sistema impõe restrições para o início de atividades em segundo plano. Essa mudança de comportamento ajuda a minimizar as interrupções para o usuário e permite que ele tenha mais controle sobre o que é mostrado na tela. Se o app inicia atividades como resultado direto da interação do usuário, é provável que ele não seja afetado por essas restrições.

Para saber mais sobre a alternativa recomendada para iniciar atividades em segundo plano, consulte o guia sobre como alertar os usuários sobre eventos urgentes no seu app.

Identificadores e dados

Esta seção lista as alterações específicas ao trabalho com identificadores e dados do dispositivo.

Remoção da afinidade de contatos

A partir do Android 10, a plataforma não monitora as informações de afinidade de contatos. Como resultado, se o app realizar uma pesquisa nos contatos do usuário, os resultados não serão ordenados por frequência de interação.

O guia sobre ContactsProvider contém um aviso que descreve os campos e métodos específicos que estão obsoletos em todos os dispositivos a partir do Android 10.

Ordem aleatória de endereço MAC

Em dispositivos com o Android 10 ou versões mais recentes, o sistema transmite endereços MAC aleatórios por padrão.

Se o app processar um caso de uso corporativo, a plataforma vai fornecer APIs para várias operações relacionadas a endereços MAC:

  • Obter endereço MAC aleatório:apps de proprietário do dispositivo e de proprietário do perfil podem recuperar o endereço MAC aleatório atribuído a uma rede específica chamando getRandomizedMacAddress().
  • Obter o endereço MAC real de fábrica:os apps do proprietário do dispositivo podem recuperar o endereço MAC de hardware real de um dispositivo chamando getWifiMacAddress(). Esse método é útil para rastrear grupos de dispositivos.

Restrição do acesso ao sistema de arquivos /proc/net

Em dispositivos com o Android 10 ou versões mais recentes, os apps não podem acessar /proc/net, que inclui informações sobre o estado de rede de um dispositivo. Os apps que precisam de acesso a essas informações, como VPNs, precisam usar a classe NetworkStatsManager ou ConnectivityManager.

Restrição de identificadores de dispositivo não reconfiguráveis

No Android 10, os apps precisam ter a permissão privilegiada READ_PRIVILEGED_PHONE_STATE para acessar os identificadores não reconfiguráveis do dispositivo, que incluem o IMEI e o número de série.

Os métodos afetados incluem:

Se o app não tiver a permissão e você tentar solicitar informações sobre identificadores não reconfiguráveis, a resposta da plataforma vai variar de acordo com a versão do SDK de destino:

  • Se o app for direcionado ao Android 10 ou versões mais recentes, vai haver uma SecurityException.
  • Se o app for destinado ao Android 9 (nível 28 da API) ou versões anteriores, o método vai retornar null ou dados de marcador de posição se o app tiver a permissão READ_PHONE_STATE. Caso contrário, ocorre um SecurityException.

Muitos casos de uso não precisam de identificadores de dispositivo não reconfiguráveis. Por exemplo, se o app usa identificadores de dispositivo não redefiníveis para rastreamento de anúncios ou análise de usuários, use um ID de publicidade do Android para esses casos de uso específicos. Para saber mais, consulte as práticas recomendadas para identificadores exclusivos.

Acesso limitado aos dados da área de transferência

A menos que seu app seja o editor de método de entrada (IME) padrão ou seja o app que está em foco no momento, ele não poderá acessar os dados da área de transferência no Android 10 ou versões mais recentes.

Proteção do número de série do dispositivo USB

Se o app for destinado ao Android 10 ou versões mais recentes, ele não poderá ler o número de série até que o usuário conceda permissão para acessar o dispositivo ou acessório USB.

Para saber mais sobre como trabalhar com dispositivos USB, consulte o guia sobre como configurar hosts USB.

Câmera e conectividade

Esta seção lista as alterações específicas aos metadados da câmera e às APIs de conectividade.

Restrição do acesso aos detalhes e metadados da câmera

O Android 10 muda a amplitude das informações que o método getCameraCharacteristics() retorna por padrão. Especificamente, o app precisa ter a permissão CAMERA para acessar metadados potencialmente específicos do dispositivo que estão incluídos no valor de retorno desse método.

Para saber mais sobre essas mudanças, consulte a seção sobre campos de câmera que exigem permissão.

Restrição para ativar e desativar o Wi-Fi

Os apps destinados ao Android 10 ou versões mais recentes não podem ativar ou desativar o Wi-Fi. O método WifiManager.setWifiEnabled() sempre retorna false.

Se você precisar pedir que os usuários ativem e desativem o Wi-Fi, use um painel de configurações.

Restrições ao acesso direto a redes Wi-Fi configuradas

Para proteger a privacidade do usuário, a configuração manual da lista de redes Wi-Fi é restrita a apps do sistema e controladores de políticas de dispositivo (DPCs). Um determinado DPC pode ser o proprietário do dispositivo ou do perfil.

Se o app for destinado ao Android 10 ou versões mais recentes e não for um app do sistema ou um DPC, os métodos abaixo não vão retornar dados úteis:

Se o app precisar se conectar a redes Wi-Fi, use os seguintes métodos alternativos:

Algumas APIs de telefonia, Bluetooth e Wi-Fi requerem permissão de localização EXATA

Se o app for destinado ao Android 10 ou versões mais recentes, ele precisará ter a permissão ACCESS_FINE_LOCATION para usar vários métodos nas APIs de Wi-Fi, Wi-Fi Aware ou Bluetooth. As seções a seguir listam as classes e os métodos afetados.

Telefonia

Wi-Fi

Bluetooth

Permissões

Esta seção descreve as atualizações no modelo de permissões do Android.

Acesso restrito ao conteúdo da tela

Para proteger o conteúdo da tela dos usuários, o Android 10 impede o acesso silencioso ao conteúdo da tela do dispositivo, mudando o escopo das permissões READ_FRAME_BUFFER, CAPTURE_VIDEO_OUTPUT e CAPTURE_SECURE_VIDEO_OUTPUT. A partir do Android 10, essas permissões são apenas de acesso por assinatura.

Os apps que precisam acessar o conteúdo da tela do dispositivo precisam usar a API MediaProjection, que mostra uma solicitação para o usuário dar consentimento.

Verificação de permissão voltada ao usuário em apps legados

Se o app for destinado ao Android 5.1 (nível 22 da API) ou versões anteriores, os usuários vão ver uma tela de permissões ao usar o app em um dispositivo com o Android 10 ou mais recente pela primeira vez, conforme mostrado na Figura 1. Nessa tela, os usuários podem revogar o acesso a permissões que o sistema concedeu anteriormente ao app no momento da instalação.

Captura de tela da caixa de diálogo
Figura 1. Caixa de diálogo voltada ao usuário que permite a revisão de permissões legadas

Reconhecimento de atividade física

O Android 10 apresenta a permissão de execução android.permission.ACTIVITY_RECOGNITION para apps que precisam detectar a contagem de passos do usuário ou classificar a atividade física dele, como caminhar, andar de bicicleta ou se mover em um veículo. Isso foi projetado para dar aos usuários visibilidade de como os dados do sensor do dispositivo são usados nas Configurações.

Algumas bibliotecas do Google Play Services, como a API Activity Recognition e a API Google Fit, não fornecem resultados, a menos que o usuário tenha concedido essa permissão ao app.

Os únicos sensores integrados no dispositivo que exigem que você declare essa permissão são os sensores de contador de passos e detector de passos.

Se o app for destinado ao Android 9 (nível 28 da API) ou versões anteriores, o sistema vai conceder automaticamente a permissão android.permission.ACTIVITY_RECOGNITION ao app, conforme necessário, se ele atender a cada uma destas condições:

  • O arquivo de manifesto inclui a permissão com.google.android.gms.permission.ACTIVITY_RECOGNITION.
  • O arquivo de manifesto não inclui a permissão android.permission.ACTIVITY_RECOGNITION.

Se o sistema conceder automaticamente a permissão android.permission.ACTIVITY_RECOGNITION, o app vai manter a permissão depois que você o atualizar para o Android 10. No entanto, o usuário pode revogar essa permissão a qualquer momento nas configurações do sistema.

Grupos de permissões removidos da IU

A partir do Android 10, os apps não podem procurar como as permissões são agrupadas na interface.