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:
- O app de SMS padrão.
- Apps com permissão
READ_PRIVILEGED_PHONE_STATE
na classeManifest.permission
e lista de permissões no arquivoprivapp-permission.xml
. Eles também precisam ser carregados no diretóriopriv-app
. - Apps com privilégios da operadora, conforme definido em Privilégios da operadora UICC.
- Um proprietário do dispositivo ou do perfil com a permissão
READ_PHONE_STATE
concedida na classeManifest.permission
. Não é necessário fazer a lista de permissões.
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.

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
SecurityException
é gerado pelas APIs de ID do dispositivo.- Apps para o Android 9 ou versões anteriores
- Se eles tiverem a permissão
READ_PHONE_STATE
, uma respostanull
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.