Obtener dirección MAC Ethernet de Android (no interfaz wifi)
Estoy usando Android con Api nivel 8 y quiero obtener la dirección de mi interfaz Ethernet (eth0).
En el nivel 8 de API, la clase NetworkInterface no tiene la función getHardwareAddress (). El WifiManager tampoco funciona ya que no es una interfaz inalámbrica.
- Mensaje de Android a Android sin Accesspoint
- Cómo obtener la dirección MAC de Android Wi-Fi Hotspot / tethering / AP
- ¿Por qué Android no tiene una dirección MAC para 3g cuando hace iOS?
- Cómo obtener una dirección IP de la dirección de Mac mediante programación en Android?
- Android consigue la dirección del bluetooth en la melcocha
¡Gracias por adelantado!
- Obtener la dirección MAC del dispositivo android sin Wifi
- ¿Los teléfonos Android tienen una dirección MAC cuando están conectados a 3G?
- ¿Tiene el emulador de dispositivos Android una dirección MAC?
- Cómo obtener la dirección MAC en Android 6.0
- Perfect unique_id para el dispositivo excepto IMEI, Android_ID, WLAN Mac y dirección Bluetooth
- Cómo programar el MAC de un dispositivo Android
Asumiendo que su interfaz Ethernet es eth0, intente abrir y leer el archivo /sys/class/net/eth0/address
.
Esta es mi solución basada en la respuesta de Joel F. Espero que ayude a alguien!
/* * Load file content to String */ public static String loadFileAsString(String filePath) throws java.io.IOException{ StringBuffer fileData = new StringBuffer(1000); BufferedReader reader = new BufferedReader(new FileReader(filePath)); char[] buf = new char[1024]; int numRead=0; while((numRead=reader.read(buf)) != -1){ String readData = String.valueOf(buf, 0, numRead); fileData.append(readData); } reader.close(); return fileData.toString(); } /* * Get the STB MacAddress */ public String getMacAddress(){ try { return loadFileAsString("/sys/class/net/eth0/address") .toUpperCase().substring(0, 17); } catch (IOException e) { e.printStackTrace(); return null; } }
Compruebe también / sys / class / efuse / mac al menos en plataformas Amlogic.
En este momento (marzo de 2014) Google no utiliza una API sobre Ethernet
Éste es el rason porque no tenemos una manera de conseguir el ethernet mac como en caso del wifi.
private String getWifiMACAddress(Context ctx) { WifiManager wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE); WifiInfo info = wifiManager.getConnectionInfo(); return info.getMacAddress(); }
Una alternativa es leer el archivo eth0. Por favor, hágamelo saber si alguien sabe lo contrario!
Esta manera de utilizar java arreglarlo; Quizás te pueda ayudar
NetworkInterface netf = NetworkInterface.getByName("eth0"); byte[] array = netf.getHardwareAddress(); StringBuilder stringBuilder = new StringBuilder(""); String str = ""; for (int i = 0; i < array.length; i++) { int v = array[i] & 0xFF; String hv = Integer.toHexString(v).toUpperCase(); if (hv.length() < 2) { stringBuilder.append(0); } stringBuilder.append(hv).append("-"); } str = stringBuilder.substring(0, stringBuilder.length()- 1);