获取安卓设备的有线网卡的MAC地址(安卓TV、安卓系统的广告机等)

一.有些安卓设备不仅有无线wifi的mac地址,还有有线网卡的mac地址,下面是几中获取方法。

1.直接上代码,以下几种方法只能获取有线网卡MAC
//得到有线网卡的MAC地址
public static String getWireMac(){
    String strMacAddress = null;
    try {
        byte[] b = NetworkInterface.getByName("eth0")
                .getHardwareAddress();
        StringBuffer buffer = new StringBuffer();
        for (int i = 0; i < b.length; i++) {
            if (i != 0) {
                buffer.append(':');
            }
            System.out.println("b:"+(b[i]&0xFF));
            String str = Integer.toHexString(b[i] & 0xFF);
            buffer.append(str.length() == 1 ? 0 + str : str);
        }
        strMacAddress = buffer.toString().toUpperCase();
        Log.d("TAG",strMacAddress);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return strMacAddress;
}
2.
public static String getMacAddress() {
    String result = "";
    String Mac = "";
    result = callCmd("busybox ifconfig", "HWaddr");

    if (result == null) {
        return "网络出错,请检查网络";
    }
    if (result.length() > 0 && result.contains("HWaddr")) {
        Mac = result.substring(result.indexOf("HWaddr") + 6, result.length() - 1);
        if (Mac.length() > 1) {
            result = Mac.toLowerCase();
        }
    }
    return result.trim();
}
3.
//根据busybox获取本地Mac
public static String getLocalMacAddressFromBusybox(){
    String result = "";
    String Mac = "";
    result = callCmd("busybox ifconfig","HWaddr");

    //如果返回的result == null,则说明网络不可取
    if(result==null){
        return "网络出错,请检查网络";
    }

    //对该行数据进行解析
    //例如:eth0      Link encap:Ethernet  HWaddr 00:16:E8:3E:DF:67
    if(result.length()>0 && result.contains("HWaddr")==true){
        Mac = result.substring(result.indexOf("HWaddr")+6, result.length()-1);
        Log.i("test","Mac:"+Mac+" Mac.length: "+Mac.length());

         /*if(Mac.length()>1){
             Mac = Mac.replaceAll(" ", "");
             result = "";
             String[] tmp = Mac.split(":");
             for(int i = 0;i<tmp.length;++i){
                 result +=tmp[i];
             }
         }*/
        result = Mac;
        Log.i("test",result+" result.length: "+result.length());
    }
    return result;
}
private static String callCmd(String cmd,String filter) {
    String result = "";
    String line = "";
    try {
        Process proc = Runtime.getRuntime().exec(cmd);
        InputStreamReader is = new InputStreamReader(proc.getInputStream());
        BufferedReader br = new BufferedReader (is);

        //执行命令cmd,只取结果中含有filter的这一行
        while ((line = br.readLine ()) != null && line.contains(filter)== false) {
            //result += line;
            Log.i("test","line: "+line);
        }

        result = line;
        Log.i("test","result: "+result);
    }
    catch(Exception e) {
        e.printStackTrace();
    }
    return result;
}

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值