2011-09-07 20 views
12

私はAndroidをApiレベル8で使用しています。イーサネットインターフェイスのアドレス(eth0)を取得したいとします。アンドロイドイーサネットMACアドレスを取得します。

APIレベル8では、NetworkInterfaceクラスにgetHardwareAddress()関数はありません。 これはワイヤレスインターフェイスではないため、WifiManagerも機能しません。

ありがとうございます!

答えて

15

イーサネットインターフェイスがeth0であると仮定して、ファイル/sys/class/net/eth0/addressを開いて読んでみてください。

+0

優れた効果があります。あなたはそれがeth0と任意のアンドロイドデバイスで動作すると思いますか? – 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月)、GoogleがAPIをおよそEthernet

我々は無線LANの場合と同様に、イーサネットMACを取得する方法を持っていないので、これは羅先特別市でprividesしません。

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

もう1つの方法は、eth0ファイルの読み取りです。もし誰かが分かっていれば教えてください!

0

この方法では、java fix itを使用します。多分あなたは

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.アドレスが登録されているメーカーに連絡し、彼らはこのモデルを作成せず、他のメーカーがMACアドレスをコピーすると言いました。

関連する問題