私はAndroidをApiレベル8で使用しています。イーサネットインターフェイスのアドレス(eth0)を取得したいとします。アンドロイドイーサネットMACアドレスを取得します。
APIレベル8では、NetworkInterfaceクラスにgetHardwareAddress()関数はありません。 これはワイヤレスインターフェイスではないため、WifiManagerも機能しません。
ありがとうございます!
私はAndroidをApiレベル8で使用しています。イーサネットインターフェイスのアドレス(eth0)を取得したいとします。アンドロイドイーサネットMACアドレスを取得します。
APIレベル8では、NetworkInterfaceクラスにgetHardwareAddress()関数はありません。 これはワイヤレスインターフェイスではないため、WifiManagerも機能しません。
ありがとうございます!
イーサネットインターフェイスがeth0であると仮定して、ファイル/sys/class/net/eth0/address
を開いて読んでみてください。
これは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;
}
}
少なくとも、Amlogicプラットフォームで/ sys/class/efuse/macも確認してください。
今(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ファイルの読み取りです。もし誰かが分かっていれば教えてください!
この方法では、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);
たぶん私の答えはそこにあなたの数に参考になることができ、あなたの残りのための少なくとも面白いです。
Android TVデバイスのイーサネットMACアドレスを取得しようとしていましたが、MACアドレスが登録されている実際の製造元を探しました。私はadbでデバイスに接続し、上記のJoel Fの偉大な答えを使用し、それは素晴らしい仕事をした。
それから私は箱をひっくり返し、それが装置の底にあるステッカーにあります。
プログラム的に行う必要がない場合は、最初にデバイスを反転させてみてください。
P.アドレスが登録されているメーカーに連絡し、彼らはこのモデルを作成せず、他のメーカーがMACアドレスをコピーすると言いました。
優れた効果があります。あなたはそれがeth0と任意のアンドロイドデバイスで動作すると思いますか? – inversus
それは標準的なLinuxカーネルのパスであり、私は彼らがすぐに変更されるのではないかと疑っています。それが助けてくれてうれしい。 –