Dans Android 6 et versions ultérieures, les fournisseurs de services Wi-Fi et les analyseurs de paquets ont été empêchés de récupérer l'adresse MAC d'usine d'un appareil via la pile Wi-Fi à partir de requêtes réseau. À partir d'Android 10, des restrictions supplémentaires sont en place pour limiter l'accès aux identifiants d'appareil (ID) aux applications avec le niveau d'autorisation privilégié . Cela protège les identifiants d'appareil tels que
- Numéros de téléphonie IMEI, MEID, ESN et IMSI.
- build, SIM ou numéros de série USB.
Qui peut accéder aux identifiants des appareils
Les ID d'appareil sont limités sur tous les appareils Android 10, même si les applications ciblent Android 9 ou une version antérieure. Les identifiants d'appareils sont accessibles par
- L'application SMS par défaut.
- Applications avec à la fois l'autorisation
READ_PRIVILEGED_PHONE_STATE
dans la classeManifest.permission
et la liste blanche dans le fichierprivapp-permission.xml
. Ceux-ci doivent également être chargés dans le répertoirepriv-app
. - Applications avec privilèges d'opérateur tels que définis dans Privilèges d'opérateur UICC .
- Un propriétaire d'appareil ou un propriétaire de profil avec l'autorisation
READ_PHONE_STATE
accordée dans la classeManifest.permission
. (L'ajout à la liste d'autorisation n'est pas obligatoire.)
Accès privilégié aux forfaits
Un package doit être privilégié pour accéder aux ID de périphérique. Il doit avoir l'autorisation READ_PRIVILEGED_PHONE_STATE
dans la classe Manifest.permission
et être sur liste blanche dans le fichier privapp-permission.xml
. Pour plus d'informations sur le processus de liste d'autorisation, consultez Liste d'autorisation des autorisations privilégiées .
Pour plus d'informations sur l'obtention d'un ID unique pour un package non privilégié , reportez-vous à Cas d'utilisation courants et à l'identifiant approprié à utiliser .
ID d'appareil restreints et adresses MAC aléatoires
Pour restreindre davantage les identifiants d'appareils, tous les appareils sous Android 10 transmettent par défaut des adresses MAC aléatoires pour les demandes de sonde et associées, et doivent avoir une adresse MAC aléatoire différente pour chaque SSID. N'utilisez pas l'adresse MAC d'usine de l'appareil en mode client, point d'accès logiciel (AP) ou cas d'utilisation Wi-Fi Direct. Il doit rester caché des API accessibles au public qui ne sont pas des applications privilégiées. Les applications privilégiées qui nécessitent le retour de l'adresse MAC d'usine doivent disposer de l'autorisation LOCAL_MAC_ADDRESS
.
Les utilisateurs ont la possibilité de conserver l'adresse MAC aléatoire par défaut attribuée à chaque SSID. L'option est visible sous Confidentialité dans Paramètres > Détails du réseau . Pour en savoir plus sur l'obtention d'une adresse MAC aléatoire, consultez Adresses MAC aléatoires .

Applications qui appellent les API d'ID d'appareil
Les applications qui appellent les API d'ID d'appareil doivent répondre aux exigences d'Android 10. Sinon, lorsqu'ils tentent d'accéder aux ID d'appareils, les informations suivantes sont renvoyées :
- Applications ciblant Android 10
- Une
SecurityException
est levée à partir des API d'ID d'appareil. - Applications ciblant Android 9 ou version antérieure
- S'ils disposent de l'autorisation
READ_PHONE_STATE
, une réponsenull
ou des données d'espace réservé sont renvoyées. - Si ce n'est pas le cas, les API d'ID d'appareil lèvent une
SecurityException
qui contient le nom de la méthode appelée et une indication que l'application appelante ne répond pas aux exigences pour accéder à l'ID demandé.
Pour plus d'informations sur les ID d'appareil immuables, consultez Identifiants d'appareil non réinitialisables et meilleures pratiques pour les identifiants uniques .
Essai
Les applications doivent être empêchées d'accéder au numéro de série de l'appareil et, le cas échéant, à l'IMEI / MEID, au numéro de série de la carte SIM et à l'identifiant de l'abonné. Les applications autorisées à accéder à ces identifiants doivent également répondre à l'un des critères répertoriés sous Qui peut accéder aux identifiants des appareils .