安卓平台获取Mac地址

来源:互联网 发布:云计算 国家政策汇总 编辑:程序博客网 时间:2024/05/01 07:37
/** * 获取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;}

原创粉丝点击