2010-04-08 45 views
37

Parece que la aplicación de java.net.NetworkInterface androide no tiene un método
byte [] getHardwareAddress() http://developer.android.com/reference/java/net/NetworkInterface.html¿Cómo obtener la dirección MAC de la interfaz de red WiFi?

he encontrado varios foros de personas que tratan de hacer esto con una respuesta definitiva, me necesito conseguir un UUID algo entre dispositivos, así que no puedo confiar en los números de teléfono o en ANDROID_ID (que puede ser sobrescrita y que creo que depende de que el usuario tenga una cuenta de google) http://developer.android.com/reference/android/provider/Settings.Secure.html#ANDROID_ID

en Linux puede use ifconfig o lea desde/proc/net/arp y puede obtener fácilmente la dirección de Hardware.

¿Hay algún archivo en Android que pueda leer?

Tiene que haber una manera de obtener esta dirección, ya que se muestra en "Configuración> Acerca del teléfono> Estado" del teléfono.

+0

he publicado aquí solución https://stackoverflow.com/a/47789324/5330408 ​​ –

Respuesta

22

Tiene que haber una manera de conseguir esta dirección ya que se muestra en las "Ajustes> Acerca del teléfono> Estado" de el teléfono.

Lo que significa, si nada más, puedes usar el código abierto de Android, tal vez usando Google Code Search, para descubrir de dónde saca eso.

Haciendo un poco de puttering yo mismo, parece que está usando getMacAddress() de WifiInfo.

+0

Ese código se puede encontrar aquí https trabajo: // github.com/android/platform_packages_apps_settings/blob/master/src/com/android/settings/wifi/AdvancedWifiSettings.java # L253-L265 – fernandohur

93

Última respuesta, pero puede ayudar a otros con el mismo "problema".

El answer es muy sencillo:

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

El código anterior le dará la dirección MAC del dispositivo, recuerde que debe tener wifi habilitado cuando se agarra la dirección. Este fragmento de código debe usarse en tu Actividad.

+23

solo para agregar algunos detalles, tendrá que agregar un permiso apropiado a androidManifest.xml para que llegue trabajo:

+2

No es necesario tener WiFi habilitado para obtener la dirección MAC. Lo entiendo con wifi apagado. – jzafrilla

0

Agregar siguiente permiso.

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

WifiManager initialize in onCreate.

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

Utilice la siguiente función.

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