Sous Android 6 et versions ultérieures, les fournisseurs de services Wi-Fi et les analyseurs de paquets ne peuvent plus 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 mises en place pour limiter l'accès aux identifiants d'appareil (ID) aux applications disposant du niveau d'autorisationprivilégié. Cela protège les ID d'appareil tels que
- les numéros IMEI, MEID, ESN et IMSI de téléphonie ;
- numéro de build, numéro de série de la carte SIM ou de la clé USB.
Qui peut accéder aux ID d'appareil
Les ID d'appareil sont limités sur tous les appareils Android 10, même si les applications ciblent Android 9 ou version antérieure. Les ID d'appareil sont accessibles par:
- Application de SMS par défaut.
- Applications disposant à la fois de l'autorisation
READ_PRIVILEGED_PHONE_STATE
dans la classeManifest.permission
et de la liste d'autorisation dans le fichierprivapp-permission.xml
. Ils doivent également être chargés dans le répertoirepriv-app
. - Applications disposant de privilèges d'opérateur, comme défini dans la section Privilèges de l'opérateur UICC.
- Propriétaire de l'appareil ou du profil disposant de l'autorisation
READ_PHONE_STATE
accordée dans la classeManifest.permission
. (La liste d'autorisation n'est pas requise.)
Accès aux packages privilégiés
Un package doit disposer de droits d'accès pour accéder aux ID d'appareil. Il doit disposer de l'autorisation
READ_PRIVILEGED_PHONE_STATE
dans la classe Manifest.permission
et figurer dans la liste d'autorisation du fichier privapp-permission.xml
. Pour en savoir plus sur le processus d'ajout à la liste d'autorisation, consultez la section Ajout à la liste d'autorisation des autorisations privilégiées.
Pour savoir comment obtenir un ID unique pour un package non privilégié, consultez la section Cas d'utilisation courants et identifiant approprié à utiliser.
ID d'appareils limités et adresses MAC aléatoires
Pour limiter davantage les ID d'appareil, tous les appareils sous Android 10 transmettent des adresses MAC aléatoires par défaut pour les requêtes de sonde et associées, et doivent disposer d'une adresse MAC aléatoire différente pour chaque SSID. N'utilisez pas l'adresse MAC d'usine de l'appareil en mode client, en tant que point d'accès logiciel (PA) ou dans les cas d'utilisation Wi-Fi Direct. Il doit rester masqué pour les API accessibles au public qui ne sont pas des applications privilégiées. Les applications privilégiées qui nécessitent que l'adresse MAC d'usine soit renvoyée doivent disposer de l'autorisation LOCAL_MAC_ADDRESS
.
Les utilisateurs ont la possibilité de conserver l'adresse MAC randomisée par défaut attribuée à chaque SSID. L'option est visible sous Confidentialité dans Paramètres > Détails du réseau. Pour savoir comment obtenir une adresse MAC aléatoire, consultez Adresses MAC aléatoires.

Figure 1 : L'adresse MAC est affichée de manière aléatoire sous "Confidentialité" dans "Détails du réseau".
Applications qui appellent des API d'ID d'appareil
Les applications qui appellent des API d'ID d'appareil doivent répondre aux exigences d'Android 10. Sinon, lorsque l'utilisateur tente d'accéder aux ID d'appareil, le résultat suivant est renvoyé:
- Applications ciblant Android 10
SecurityException
est généré à partir des API d'ID d'appareil.- Applications ciblant Android 9 ou version antérieure
- S'il dispose 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 génèrent une exception
SecurityException
contenant le nom de la méthode appelée et une indication indiquant que l'application appelante ne répond pas aux exigences pour accéder à l'ID demandé.
Pour en savoir plus sur les ID d'appareil immuables, consultez les sections ID d'appareil non réinitialisables et Bonnes pratiques concernant les identifiants uniques.
Tests
Les applications doivent être empêchées d'accéder au numéro de série de l'appareil et, le cas échéant, au code IMEI ou MEID, au numéro de série de la SIM et à l'ID abonné. Les applications autorisées à accéder à ces ID doivent également répondre à l'un des critères indiqués sous Qui peut accéder aux ID d'appareil.