En Android 6 y versiones posteriores, se restringió a los proveedores de servicios de Wi-Fi y a los analizadores de paquetes la recuperación de la dirección MAC de fábrica de un dispositivo a través de la pila de Wi-Fi desde las solicitudes de red. A partir de Android 10, se aplican restricciones adicionales que limitan el acceso a los identificadores (IDs) del dispositivo a las apps con el nivel de permisocon privilegios. Esto protege los IDs de dispositivos, como los siguientes:
- números IMEI, MEID, ESN y IMSI de telefonía
- números de serie de compilación, SIM o USB
Quiénes pueden acceder a los IDs de dispositivo
Los IDs de dispositivo están restringidos en todos los dispositivos Android 10, incluso si las apps se orientan a Android 9 o versiones anteriores. Se puede acceder a los IDs de dispositivo de las siguientes maneras:
- La app de SMS predeterminada
- Apps con permiso
READ_PRIVILEGED_PHONE_STATE
en la claseManifest.permission
y lista de entidades permitidas en el archivoprivapp-permission.xml
También se deben cargar en el directoriopriv-app
. - Apps con privilegios de operador, como se define en Privilegios de operador de UICC
- Un propietario del dispositivo o del perfil con permiso
READ_PHONE_STATE
otorgado en la claseManifest.permission
(No es necesario incluirlo en la lista de entidades permitidas).
Acceso a paquetes con privilegios
Un paquete debe tener privilegios para acceder a los IDs de dispositivos. Debe tener permiso
READ_PRIVILEGED_PHONE_STATE
en la clase Manifest.permission
y estar en la lista de entidades permitidas del archivo privapp-permission.xml
. Para obtener información sobre el proceso de inclusión en la lista de entidades permitidas, consulta Inclusión de permisos con privilegios en la lista de entidades permitidas.
Para obtener información sobre cómo obtener un ID único para un paquete sin privilegios, consulta Casos de uso comunes y el identificador adecuado para usar.
IDs de dispositivos restringidos y direcciones MAC aleatorias
Para restringir aún más los IDs de dispositivo, todos los dispositivos con Android 10 transmiten direcciones MAC aleatorias de forma predeterminada para las solicitudes de sondeo y asociadas, y deben tener una dirección MAC aleatoria diferente para cada SSID. No uses la dirección MAC de fábrica del dispositivo en el modo cliente, el punto de acceso (AP) virtual ni los casos de uso de Wi-Fi Direct. Debe permanecer oculto para las APIs de acceso público que no son apps con privilegios. Las apps con privilegios que requieren que se devuelva la dirección MAC de fábrica deben tener el permiso LOCAL_MAC_ADDRESS
.
Los usuarios tienen la opción de mantener la dirección MAC aleatorizada predeterminada que se asigna a cada SSID. Puedes ver la opción en Privacidad en Configuración > Detalles de red. Para obtener información sobre cómo obtener una dirección MAC aleatoria, consulta Direcciones MAC aleatorias.

Figura 1: La dirección MAC se muestra como aleatoria en Privacidad en Detalles de red.
Apps que invocan APIs de ID de dispositivo
Las apps que invoquen APIs de ID de dispositivo deben cumplir con los requisitos de Android 10. De lo contrario, cuando intente acceder a los IDs de dispositivos, se mostrará lo siguiente:
- Apps orientadas a Android 10
SecurityException
se arroja desde las APIs de ID de dispositivo.- Apps orientadas a Android 9 o versiones anteriores
- Si tiene el permiso
READ_PHONE_STATE
, se muestra una respuestanull
o los datos del marcador de posición. - De lo contrario, las APIs de ID de dispositivo arrojan
SecurityException
que contiene el nombre del método llamado y una indicación de que la app que realiza la llamada no cumple con los requisitos para acceder al ID solicitado.
Para obtener más información sobre los IDs de dispositivos inmutables, consulta Identificadores de dispositivos que no se pueden restablecer y las prácticas recomendadas para identificadores únicos.
Prueba
Se debe impedir que las apps accedan al número de serie del dispositivo y, cuando corresponda, al IMEI o MEID, al número de serie de la SIM y al ID del suscriptor. Las apps con permiso para acceder a estos IDs también deben cumplir con uno de los criterios que se indican en Quién puede acceder a los IDs de dispositivos.