Android 6.0获取wifi Mac地址为02:00:00:00:00:00的解决方法

来源:互联网 发布:金融数据分析基于r 编辑:程序博客网 时间:2024/05/29 08:38

参考:http://blog.csdn.net/jia635/article/details/51899919 


之前使用的方法如下:


// Android 6.0之前的版本可以用的方法(模拟器可以使用)    private String getMacAddrOld()    {    String macString = "";    WifiManager wifimsg = (WifiManager)getSystemService(Context.WIFI_SERVICE);    if (wifimsg != null)    {        if (wifimsg.getConnectionInfo() != null)        {            if (wifimsg.getConnectionInfo().getMacAddress() != null)            {                macString = wifimsg.getConnectionInfo().getMacAddress();            }        }    }    return macString;    }

使用这个方法,在模拟器上是可以正常获取wifi mac地址,但是在Android 6.0系统上,获取的就有问题,返回的是“02:00:00:00:00:00”



谷歌搜到了如下的方法,可以获取Android6.0系统的wifi Mac 地址。

但是这个方法,却获取不到模拟器的地址,或者是获取到的和上面的方法不同,而且不准确。

public static String getMacAddr() {try {        List<NetworkInterface> all = Collections.list(NetworkInterface.getNetworkInterfaces());        for (NetworkInterface nif : all) {            if (!nif.getName().equalsIgnoreCase("wlan0")) continue;            byte[] macBytes = nif.getHardwareAddress();            if (macBytes == null) {                return "";            }            StringBuilder res1 = new StringBuilder();            for (byte b : macBytes) {                res1.append(String.format("%02X:",b));            }            if (res1.length() > 0) {                res1.deleteCharAt(res1.length() - 1);            }            return res1.toString();        }    } catch (Exception ex) {    }    return "02:00:00:00:00:00";}


最后,是先使用旧的方法获取,如果获取到的是“02:00:00:00:00:00”,那么就调用下面的新方法。

public String getDeviceMacAddress()    {    String addr = getMacAddrOld();    if(addr.equals("02:00:00:00:00:00"))    {    addr = SystemInfo.getMacAddr();    }    return addr;    }


0 0
原创粉丝点击