2011-09-07 54 views

Trả lời

15

Giả sử giao diện ethernet của bạn là eth0, hãy thử mở và đọc tệp /sys/class/net/eth0/address.

+0

xuất sắc! Bạn có nghĩ rằng nó hoạt động trong bất kỳ thiết bị Android với eth0? – inversus

+0

Nó nên, đó là một đường dẫn hạt nhân Linux tiêu chuẩn mà tôi nghi ngờ họ sẽ thay đổi bất cứ lúc nào sớm. Vui mừng nó đã giúp. –

25

Đây là giải pháp của tôi dựa trên câu trả lời của Joel F. Hy vọng nó sẽ giúp một ai đó!

/* 
* 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

Kiểm tra/sys/class/efuse/mac ít nhất trên nền tảng Amlogic.

0

Ngay bây giờ (tháng 3 năm 2014) Google không privides một API về Ethernet

Đây là Rason vì chúng ta không có một cách để có được mac ethernet như trong trường hợp wifi.

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

Một cách khác là đọc tệp eth0. Xin vui lòng cho tôi biết nếu có ai biết khác!

0

cách này để sử dụng java sửa lỗi; có thể có thể giúp bạn

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

Có lẽ câu trả lời của tôi sẽ hữu ích cho một vài người trong số đó và ít nhất là vui cho những người còn lại của bạn.

Tôi đang cố gắng lấy địa chỉ MAC ethernet cho thiết bị Android TV, để cố gắng tìm nhà sản xuất thực tế địa chỉ MAC được đăng ký. Tôi kết nối với thiết bị với adb và sử dụng câu trả lời tuyệt vời của Joel F ở trên và nó hoạt động rất tốt.

Sau đó, tôi lật hộp và nó nằm trên một nhãn dán ở dưới cùng của thiết bị.

Vì vậy, nếu bạn không cần nó theo chương trình, trước hết hãy thử lật thiết bị. MAC address sticker on bottom of device.

P.S. Tôi liên lạc với nhà sản xuất địa chỉ được đăng ký, và họ nói rằng họ không làm cho mô hình này và các nhà sản xuất khác sao chép địa chỉ MAC của họ.

Các vấn đề liên quan