web-dev-qa-db-fra.com

Obtenir l'adresse MAC de l'appareil Android sans Wifi

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.

21
Tom

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.

17
Chris Stratton

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é.

23
Alexander Lucas

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 
4
Whome

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.

2
Jess

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();
0
Thejus Krishna