No Android 6 e superior, os provedores de serviços Wi-Fi e analisadores de pacotes foram impedidos de recuperar o endereço MAC de fábrica de um dispositivo por meio da pilha Wi-Fi de solicitações de rede. A partir do Android 10, existem restrições adicionais que limitam o acesso a identificadores de dispositivo (IDs) a aplicativos com o nível de permissão privilegiada . Isso protege IDs de dispositivos, como
- números de telefonia IMEI, MEID, ESN e IMSI.
- build, SIM ou números de série USB.
Quem pode acessar os IDs dos dispositivos
Os IDs de dispositivo são restritos em todos os dispositivos Android 10, mesmo que os aplicativos sejam direcionados ao Android 9 ou inferior. As IDs de dispositivos podem ser acessadas por
- O aplicativo de SMS padrão.
- Aplicativos com permissão
READ_PRIVILEGED_PHONE_STATE
na classeManifest.permission
e lista de permissões no arquivoprivapp-permission.xml
. Eles também devem ser carregados no diretóriopriv-app
. - Aplicativos com privilégios de operadora conforme definido em Privilégios de operadora UICC .
- Um proprietário de dispositivo ou proprietário de perfil com permissão
READ_PHONE_STATE
concedida na classeManifest.permission
. (A lista de permissões não é necessária.)
Acesso privilegiado a pacotes
Um pacote deve ter privilégios para acessar IDs de dispositivo. Ele deve ter a permissão READ_PRIVILEGED_PHONE_STATE
na classe Manifest.permission
e estar na lista de permissões no arquivo privapp-permission.xml
. Para obter informações sobre o processo da lista de permissões, consulte Lista de permissões de permissões privilegiadas .
Para obter informações sobre como obter um ID exclusivo para um pacote sem privilégios , consulte Casos de uso comuns e o identificador apropriado 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 solicitações de sondagem e associadas e devem 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, soft access point (AP) ou casos de uso do Wi-Fi Direct. Ele deve permanecer oculto de APIs publicamente acessíveis que não sejam aplicativos privilegiados. Os aplicativos 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 visualizada em Privacidade em Configurações > Detalhes da rede . Para saber como obter um endereço MAC aleatório, consulte Endereços MAC aleatórios .
Apps que invocam APIs de ID de dispositivo
Os aplicativos que invocam APIs de ID do dispositivo precisam atender aos requisitos do Android 10. Caso contrário, quando eles tentarem acessar os IDs dos dispositivos, o seguinte será retornado:
- Aplicativos direcionados ao Android 10
- Uma
SecurityException
é lançada das APIs de ID do dispositivo. - Aplicativos direcionados ao Android 9 ou anterior
- Se eles tiverem a permissão
READ_PHONE_STATE
, uma respostanull
ou dados de espaço reservado serão retornados. - Caso contrário, as APIs de ID do dispositivo lançam uma
SecurityException
que contém o nome do método chamado e uma indicação de que o aplicativo de chamada não atende aos requisitos para acessar a ID solicitada.
Para obter mais informações sobre IDs de dispositivos imutáveis, consulte Identificadores de dispositivos não reconfiguráveis e práticas recomendadas para identificadores exclusivos .
Teste
Os aplicativos devem ser impedidos de acessar o número de série do dispositivo e, quando aplicável, IMEI/MEID, número de série do SIM e ID do assinante. Os aplicativos com permissão para acessar esses IDs também devem atender a um dos critérios listados em Quem pode acessar os IDs do dispositivo .