IDs de dispositivos imutáveis

No Android 6 e versões mais recentes, os provedores de serviços de Wi-Fi e os analisadores de pacotes não podem mais extrair o endereço MAC de fábrica de um dispositivo pela pilha Wi-Fi de solicitações de rede. A partir do Android 10, há outras restrições que limitam o acesso a identificadores de dispositivos (IDs) a apps com o nível de permissão privilegiado. Isso protege os IDs de dispositivos, como

  • números de IMEI, MEID, ESN e IMSI de telefonia.
  • números de série de build, SIM ou USB.

Quem pode acessar os IDs de dispositivos

Os IDs de dispositivo são restritos em todos os dispositivos Android 10, mesmo que os apps sejam destinados ao Android 9 ou versões anteriores. Os IDs de dispositivos podem ser acessados por:

Acesso a pacotes privilegiados

Um pacote precisa ter privilégios para acessar os IDs de dispositivos. Ele precisa ter permissão READ_PRIVILEGED_PHONE_STATE na classe Manifest.permission e estar na lista de permissões permitidas no arquivo privapp-permission.xml. Para mais informações sobre o processo de lista de permissões, consulte Lista de permissões privilegiadas.

Para informações sobre como conseguir um ID exclusivo para um pacote sem privilégios, consulte Casos de uso comuns e o identificador adequado para usar.

IDs de dispositivos restritos e endereços MAC aleatórios

Para restringir ainda mais os IDs de dispositivos, todos os dispositivos no Android 10 transmitem endereços MAC aleatórios por padrão para a sondagem e as solicitações associadas e precisam ter um endereço MAC aleatório diferente para cada SSID. Não use o endereço MAC de fábrica do dispositivo no modo cliente, ponto de acesso (AP) virtual ou casos de uso do Wi-Fi Direct. Ele precisa permanecer oculto de APIs acessíveis publicamente que não são apps privilegiados. Os apps privilegiados que exigem que o endereço MAC de fábrica seja retornado precisam ter a permissão LOCAL_MAC_ADDRESS.

Os usuários têm a opção de manter o endereço MAC aleatório padrão atribuído a cada SSID. A opção pode ser vista em Privacidade em Configurações > Detalhes da rede. Para saber como obter um endereço MAC aleatório, consulte Endereços MAC aleatórios.

A tela mostra se o ID do dispositivo usa um endereço MAC aleatório para privacidade

Figura 1.O endereço MAC aparece como aleatório em "Privacidade" em "Detalhes da rede".

Apps que invocam APIs de ID do dispositivo

Os apps que invocam APIs de ID do dispositivo precisam atender aos requisitos do Android 10. Caso contrário, quando eles tentarem acessar os IDs do dispositivo, o seguinte será retornado:

  • Apps destinados ao Android 10
  • Apps para o Android 9 ou versões anteriores
    • Se eles tiverem a permissão READ_PHONE_STATE, uma resposta null ou dados de marcador de posição serão retornados.
    • Caso contrário, as APIs do ID do dispositivo vão gerar SecurityException que contém o nome do método chamado e uma indicação de que o app que chama não atende aos requisitos para acessar o ID solicitado.

Para saber mais sobre IDs de dispositivo imutáveis, consulte Identificadores de dispositivo não reconfiguráveis e práticas recomendadas para identificadores exclusivos.

Teste

Os apps não podem acessar o número de série do dispositivo e, quando aplicável, o IMEI ou MEID, o número de série do SIM e o ID do assinante. Os apps com permissão para acessar esses IDs também precisam atender a um dos critérios listados em Quem pode acessar os IDs do dispositivo.