/**
* 获取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;
}
安卓平台获取Mac地址
最新推荐文章于 2021-10-18 16:22:01 发布