安卓平台获取Mac地址

/**
 * 获取Mac地址,如果wifi没有开启则获取不到<br/>
 * 开启WLAN是耗时操作,为了防止NAR建议放在子线程内执行<br/>
 * 需要权限:
 * <uses-permission android:name="android.permission.INTERNET" />
 * <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
 * <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
 * 2017/5/25 li
 */
public String getMacAddr() {
	String mac = "";
	boolean ret = false;
	WifiManager wifiManager = (WifiManager) this.activity.getApplicationContext()
			.getSystemService(Context.WIFI_SERVICE);
	try {
		boolean state = wifiManager.isWifiEnabled();
		if (!state) {
			wifiManager.setWifiEnabled(true);
			ret = true;
			int time = 100;
			while (time > 0) {
				if (wifiManager.isWifiEnabled()) {
					break;
				}
				try {
					Thread.sleep(100);
				} catch (Exception e) {
				}
				time--;
			}
		}
		List<NetworkInterface> all = Collections.list(NetworkInterface
				.getNetworkInterfaces());
		for (NetworkInterface nif : all) {
			if (!nif.getName().equalsIgnoreCase("wlan0")) {
				continue;
			}

			byte[] macBytes = nif.getHardwareAddress();
			if (macBytes == null) {
				break;
			}

			StringBuilder res1 = new StringBuilder();
			for (byte b : macBytes) {
				res1.append(String.format("%02x:", b));
			}

			if (res1.length() > 0) {
				res1.deleteCharAt(res1.length() - 1);
			}
			mac = res1.toString();
			break;
		}
	} catch (Exception ex) {
		ex.printStackTrace();
	}
	if (ret) {
		wifiManager.setWifiEnabled(false);
	}

	return mac;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值