2010-04-08 13 views
37

Sembra l'attuazione java.net.NetworkInterface di Android non ha un metodo
byte [] getHardwareAddress() http://developer.android.com/reference/java/net/NetworkInterface.htmlCome ottenere l'indirizzo MAC dell'interfaccia di rete WiFi?

ho trovato diversi forum di persone che cercano di fare questo con una risposta definitiva, mi bisogno di ottenere un po 'UUID cross-device, quindi non posso contare su numeri di telefono o in ANDROID_ID (che può essere sovrascritto e che credo dipende l'utente con un account Google) http://developer.android.com/reference/android/provider/Settings.Secure.html#ANDROID_ID

in Linux È possibile usa ifconfig o leggi da/proc/net/arp e puoi facilmente ottenere l'indirizzo Hardware.

C'è un file in Android che posso leggere?

Deve esserci un modo per ottenere questo indirizzo poiché è mostrato in "Impostazioni> Info sul telefono> Stato" del telefono.

+0

ho postato qui soluzione https://stackoverflow.com/a/47789324/5330408 ​​ –

risposta

22

Ci deve essere un modo per ottenere questo indirizzo dal momento che è illustrato nelle "Impostazioni> Info sul telefono> Stato" del telefono.

Il che significa che, se non altro, è possibile utilizzare Putter per il codice open source Android, magari utilizzando Google Code Search, per capire da dove viene estratto.

Facendo un po 'di puttering, sembrerebbe che stia usando getMacAddress() da WifiInfo.

+0

che il codice può essere trovato qui https lavoro: // GitHub.com/android/platform_packages_apps_settings/blob/master/src/com/android/settings/wifi/AdvancedWifiSettings.java # L253-L265 – fernandohur

93

Risposta tardiva, ma può aiutare gli altri con lo stesso "problema".

Il answer è davvero semplice:

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

Il codice di cui sopra si arriva l'indirizzo MAC del dispositivo, ricordarsi di avere wifi attivato quando afferrando l'indirizzo. Questo snippet di codice dovrebbe essere utilizzato nella tua attività.

+23

solo per aggiungere qualche dettaglio, dovrai aggiungere un'appropriata autorizzazione per androidManifest.xml per farlo lavoro:

+2

Non è necessario avere il wifi abilitato per ottenere l'indirizzo MAC. L'ho preso con la connessione wifi spenta. – jzafrilla

0

Add seguente autorizzazione.

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

WifiManager inizializza su onCreate.

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

Utilizzare la seguente funzione.

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