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

参考: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;
    }


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值