androidM以上获取MAC地址不准确的解决方案

在android5.0上使用以前通用的获取mac地址的方法,会固定返回02:00:00:00:00:00,谷歌为了保护用户隐私,也是煞费苦心.但是怎能防得住我国众开发者.嘿嘿嘿

5.0以下手机获取方案

5.0以下手机获取MAC地址使用如下方案:

		MAC_ADDR = "";
		try {
			WifiManager mgr = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
			MAC_ADDR = mgr.getConnectionInfo().getMacAddress();
		} catch (Exception e) {
			e.printStackTrace();
			MAC_ADDR = "";
		}

在5.0以上此方法固定返回02:00:00:00:00:00.

5.0以上手机获取方案

5.0以上手机获取MAC地址使用如下方案:

//修复在6.0以上获取虚假mac的问题.固定返回02:00:00:00:00:00
public static String getMacAdressOverAndroidM() {
	String address = "";
	Enumeration<NetworkInterface> interfaces;
	try {
		interfaces = NetworkInterface.getNetworkInterfaces();
		while (interfaces.hasMoreElements()) {
			NetworkInterface netWork = interfaces.nextElement();
			byte[] by = netWork.getHardwareAddress();
			if (by == null || by.length == 0) {
				continue;
			}
			StringBuilder builder = new StringBuilder();
			for (byte b : by) {
				builder.append(String.format("%02X:", b));
			}
			if (builder.length() > 0) {
				builder.deleteCharAt(builder.length() - 1);
			}
			String mac = builder.toString();
			LogMgr.d("mac", "interfaceName=" + netWork.getName() + ", mac=" + mac);
			if (netWork.getName().equals("wlan0")) {
				address = mac;
			}
		}
	} catch (SocketException e) {
		e.printStackTrace();
	}
	return address;
}

原理:读取网络信息,匹配出wlan0字段的硬件信息.

恩,完事儿.