Comment obtenir l'adresse MAC de l'interface réseau d'un périphérique Android ne disposant pas d'une interface Wifi (par exemple, l'émulateur Android)? WifiInfo obtenu via WifiManager renvoie null.
MODIFIER
Pour être plus clair: je dois communiquer avec un protocole réseau existant (non conçu par moi) sur le réseau local où je dois envoyer l'adresse mac de l'interface de communication dans la charge utile pendant une phase d'enregistrement.
Lire/sys/class/net/[quelque chose]/adresse sous forme de fichier texte
Mais il est peu probable que vous soyez utile dans votre façon de penser.
Je vais faire un saut et supposer que vous voulez cette adresse MAC afin d'établir un identifiant unique pour le périphérique. Les adresses Mac ne sont pas la solution.
Il existe un article sur le blog du développeur Android intitulé " Identifying App Installations ", qui traite assez bien de la génération générique d'identifiants uniques, y compris des méthodes courantes, ainsi que des avantages/inconvénients. Cela vaut vraiment la peine d'être lu. La citation suivante est tout à fait pertinente pour cet article:
Il peut être possible de récupérer une adresse Mac à partir du matériel WiFi ou Bluetooth d’un périphérique. Nous vous recommandons de ne pas utiliser ceci comme identifiant unique. Pour commencer, tous les appareils ne disposent pas du WiFi. De plus, si le WiFi n'est pas activé, le matériel peut ne pas indiquer l'adresse Mac.
Les options à votre disposition incluent notamment TelephonyManager.getDeviceId (), Android.os.Build.SERIAL et Settings.Secure.Android_ID, qui sont tous traités plus en détail dans l'article lié.
Voir cet article où j'ai envoyé l'exemple Utils.Java pour fournir des implémentations en Java pur.
Utils.getMACAddress("wlan0");
Utils.getMACAddress("eth0");
Utils.getIPAddress(true); // IPv4
Utils.getIPAddress(false); // IPv6
Quelle est l'interface réseau dont vous voulez l'adresse MAC? S'il n'y a pas de wifi, vous ne pouvez certainement pas obtenir l'adresse MAC du périphérique wifi. Il représente le matériel physique et s'il n'en est pas un, il n'existe tout simplement pas.
Pour obtenir le wifi MAC d'un appareil Android en utilisant adb: Adb Shell
Utilisez le code suivant en Java pour l'obtenir par programme:
Process p = Runtime.getRuntime.exec("adb", "Shell", "getprop", "ril.wifi_macaddr")
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream());
String macAddress = br.readLine();