Uzyskaj adres MAC urządzenia z systemem android bez Wifi

Jak uzyskać adres MAC interfejsu sieciowego urządzenia z Androidem, które nie ma interfejsu Wifi (np. emulatora Androida)? WifiInfo uzyskane przez WifiManager zwraca null .

EDIT

Dla jasności: muszę komunikować się z istniejącym protokołem sieciowym (nie zaprojektowanym przeze mnie) w sieci lokalnej, gdzie muszę wysłać adres mac interfejsu komunikującego się w ramach ładunku podczas fazy rejestracji.

Author: Tom, 2011-05-31

5 answers

Odczyt/sys/class/net/[coś] / adres jako plik tekstowy

Ale to raczej nie będzie przydatne w sposób, w jaki myślisz.

 17
Author: Chris Stratton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-31 22:21:06

Zrobię krok naprzód i zakładam, że chcesz Ten adres MAC, aby ustalić unikalny identyfikator urządzenia. Adresy Mac nie są sposobem, aby to zrobić.

Jest blog dewelopera Androida zatytułowany " identyfikowanie instalacji aplikacji ", który obejmuje temat generowania unikalnych identyfikatorów dość dobrze, w tym popularne metody i wady. Zdecydowanie warto przeczytać. Dość istotne dla tego postu jest następujący cytat:

Może być możliwość pobrania adresu Mac ze sprzętu Wi-Fi lub Bluetooth urządzenia. Nie zalecamy używania tego jako unikalnego identyfikatora. Po pierwsze, nie wszystkie urządzenia mają WiFi. Ponadto, jeśli WiFi nie jest włączone, sprzęt może nie zgłosić adresu Mac.

Zamiast tego dostępne są opcje: TelephonyManager.getDeviceId (), android.os.Buduj.SERIAL i ustawienia.Zabezpieczony.ANDROID_ID, z których wszystkie są omówione bardziej szczegółowo w linkowanym poście.

 23
Author: Alexander Lucas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-31 19:37:49

Zobacz ten post gdzie złożyłem Utils.przykład Javy do implementacji pure-java.

Utils.getMACAddress("wlan0");
Utils.getMACAddress("eth0");
Utils.getIPAddress(true); // IPv4
Utils.getIPAddress(false); // IPv6 
 4
Author: Whome,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:00:55

Jakiego interfejsu sieciowego chcesz mieć adres MAC? Jeśli nie ma wifi, z pewnością nie możesz uzyskać adresu MAC urządzenia wifi. Reprezentuje fizyczny sprzęt, a jeśli go nie ma, po prostu nie istnieje.

 2
Author: Jess,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-31 18:28:29

Aby uzyskać wifi MAC urządzenia z Androidem za pomocą adb: adb shell getprop ril.wifi_macaddr

Użyj następującego kodu w Javie, aby uzyskać go programowo:

Process p = Runtime.getRuntime.exec("adb", "shell", "getprop", "ril.wifi_macaddr")
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream());
String macAddress = br.readLine();
 0
Author: Thejus Krishna,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-17 09:18:48