首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取android以太网MAC地址(非wifi接口)

获取android以太网MAC地址(非wifi接口)
EN

Stack Overflow用户
提问于 2011-09-07 19:17:27
回答 8查看 23.9K关注 0票数 16

我正在使用安卓和Api level 8,我想要获取我的以太网接口(eth0)的地址。

在API8级上,NetworkInterface类没有getHardwareAddress()函数。WifiManager也无法正常工作,因为这不是无线接口。

提前感谢!

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-09-07 21:36:34

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

票数 24
EN

Stack Overflow用户

发布于 2011-09-09 22:19:23

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

代码语言:javascript
复制
/*
 * 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;
    }
}
票数 28
EN

Stack Overflow用户

发布于 2016-03-31 16:09:20

使用java的这种方式来修复它;也许可以帮助您。

代码语言:javascript
复制
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);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7332931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档