2011-09-07 782 views
12

我使用的是具有Api级别8的Android,我想获取我的以太网接口(eth0)的地址。获取android以太网MAC地址(不是wifi接口)

在API级别8上,NetworkInterface类没有函数getHardwareAddress()。 WifiManager也不起作用,因为这不是无线接口。

在此先感谢!

回答

15

假设您的以太网接口是eth0,请尝试打开并阅读文件/sys/class/net/eth0/address

+0

非常好!它的工作。你认为它可以在任何安装了eth0的android设备上工作吗? – inversus

+0

它应该是一个标准的Linux内核路径,我怀疑它们很快就会改变。很高兴帮助。 –

25

这是我基于Joel F答案的解决方案。希望它能帮助别人!

/* 
* 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; 
    } 
} 
1

至少在Amlogic平台上检查/ sys/class/efuse/mac。

0

现在(2014年3月),谷歌不privides的API约Ethernet

这是因为罗先我们没有办法让以太网MAC像wifi的情况下。

private String getWifiMACAddress(Context ctx) { 
    WifiManager wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE); 
    WifiInfo info = wifiManager.getConnectionInfo(); 
    return info.getMacAddress(); 
} 

另一种方法是读取eth0文件。如果有人知道,请让我知道!

0

这种方式使用java修复它;也许可以帮助你

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); 
0

也许我的回答会对你们中的少数人有所帮助,至少对你们其他人很有意思。

我试图获取Android TV设备的以太网MAC地址,试图找到MAC地址注册到的实际制造商。我用adb连接到设备,并使用Joel F的上面的很好的答案,它工作得很好。

然后我将盒子翻转过来,它放在设备底部的贴纸上。

因此,如果您不需要编程,请先尝试翻转设备。 MAC address sticker on bottom of device.

P.S.我联系了注册地址的制造商,他们表示他们不制造这种型号,而其他制造商则复制其MAC地址。

相关问题