web-dev-qa-db-fra.com

Comment obtenir l'adresse MAC de l'interface réseau WiFi?

Il semble que l’implémentation Java.net.NetworkInterface d’Android n’a pas de
byte [] getHardwareAddress () method http://developer.Android.com/reference/Java/net/NetworkInterface.html

J'ai trouvé plusieurs forums de personnes essayant de le faire sans réponse définitive. J'ai besoin d'un UUID quelque peu inter-périphérique, je ne peux donc pas me fier aux numéros de téléphone ni à Android_ID (qui peut être écrasé et qui dépend compte utilisateur google) http://developer.Android.com/reference/Android/provider/Settings.Secure.html#Android_ID

Sous Linux, vous pouvez utiliser ifconfig ou lire à partir de/proc/net/arp et vous pouvez facilement obtenir l'adresse matérielle.

Existe-t-il un fichier dans Android que je peux lire?

Il doit y avoir un moyen d’obtenir cette adresse car elle apparaît dans les "Paramètres> À propos du téléphone> État" du téléphone.

39
Gubatron

Il doit y avoir un moyen d’obtenir cela adresse car il est indiqué dans le "Paramètres> À propos du téléphone> État" de le téléphone.

Ce qui signifie que, si rien d'autre, vous pouvez utiliser le code source ouvert Android, peut-être en utilisant Google Code Search, pour déterminer d'où il tire.

En faisant un peu de putter moi-même, il semblerait qu'il utilise getMacAddress() de WifiInfo.

22
CommonsWare

Réponse tardive, mais cela peut aider les autres avec le même "problème".

Le répondre est vraiment simple:

WifiManager wifiMan = (WifiManager) this.getSystemService(
                Context.WIFI_SERVICE);
WifiInfo wifiInf = wifiMan.getConnectionInfo();
String macAddr = wifiInf.getMacAddress();

Le code ci-dessus vous donnera l'adresse MAC de votre appareil. N'oubliez pas d'activer le wifi lors de la saisie de l'adresse. Cet extrait de code doit être utilisé dans votre activité.

93
Tobiaswk

METTRE À JOUR:

Début Android 6.0, API ci-dessus vous donnera une adresse MAC constante pour tous les périphériques, ce qui est 02h00, 00h00, 00h00. Voir ci-dessous pour plus de détails
http://developer.Android.com/about/versions/Marshmallow/Android-6.0-changes.html
Trouvé un autre poste qui prétend trouver l'adresse MAC dans 6.0, pas testé si
Comment obtenir l'adresse Mac Wi-Fi dans Android Marshmallow

5
Kaps

Ajouter la permission suivante.

 <uses-permission Android:name="Android.permission.ACCESS_WIFI_STATE" />

WifiManager s'initialise dans onCreate.

 WifiManager wifiMgr = (WifiManager) getContext().getSystemService(context.WIFI_SERVICE);

Utilisez la fonction suivante.

 public void WI-FI_MAC() {
    WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
    String macAddress = wifiInfo.getMacAddress();
    }
0
Quantum4U