2010-04-08 13 views
37

Wydaje się, że realizacja java.net.NetworkInterface Androida nie ma metody
byte [] getHardwareAddress() http://developer.android.com/reference/java/net/NetworkInterface.htmlJak uzyskać adres MAC interfejsu sieciowego WiFi?

ja znalazłem kilka forów od ludzi, którzy próbują zrobić to bez ostatecznej odpowiedzi, trzeba uzyskać UUID nieco różnych urządzeniach, więc nie może powoływać się na numery telefonów lub w ANDROID_ID (które mogą być nadpisane i co moim zdaniem zależy od użytkownika posiadającego konto google) http://developer.android.com/reference/android/provider/Settings.Secure.html#ANDROID_ID

w Linuksie możesz użyj ifconfig lub przeczytaj z/proc/net/arp i możesz łatwo uzyskać adres sprzętowy.

Czy istnieje plik w Androidzie, który mogę przeczytać?

Musi istnieć sposób na uzyskanie tego adresu, ponieważ jest on wyświetlany w "Ustawienia> Informacje o telefonie> Stan" telefonu.

+0

Zamieściłem tu rozwiązanie https://stackoverflow.com/a/47789324/5330408 ​​ –

Odpowiedz

22

Musi być jakiś sposób, aby uzyskać ten adresu, ponieważ jest to pokazane na „Ustawienia> Informacje o telefonie> Stan” z telefonu.

Co oznacza, że ​​jeśli nic więcej, możesz kręcić wokół kodu open source Androida, być może za pomocą Google Code Search, aby dowiedzieć się, skąd to bierze.

Trochę kręcę się, wydaje się, że używa getMacAddress() z WifiInfo.

+0

Ten kod można znaleźć tutaj https: // pracy GitHub.com/android/platform_packages_apps_settings/blob/master/src/com/android/settings/wifi/AdvancedWifiSettings.java # L253-L265 – fernandohur

93

Późna odpowiedź, ale może pomóc innym osobom z tym samym "problemem".

The answer jest naprawdę prosta:

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

Powyższy kod będzie Ci adres MAC urządzenia, należy pamiętać, aby mieć wifi włączone kiedy chwytając adres. Ten fragment kodu powinien być użyty w Twojej Działalności.

+23

aby dodać trochę szczegółów, musisz dodać odpowiednie uprawnienie do androidManifest.xml, aby uzyskać dostęp do praca:

+2

Nie trzeba włączać wifi, aby uzyskać adres MAC. Rozumiem to z wyłączonym wifi. – jzafrilla

0

Dodaj następujący zgody.

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

WifiManager zainicjować w onCreate.

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

Użyj następującej funkcji.

public void WI-FI_MAC() { 
    WifiInfo wifiInfo = wifiMgr.getConnectionInfo(); 
    String macAddress = wifiInfo.getMacAddress(); 
    } 
Powiązane problemy