2011-09-07 785 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地址。

相關問題