Android獲取WifiMac地址
1:android6.0以下通過wifiinfo來獲取,
WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
if (wifi != null) {
WifiInfo wifiInfo = wifi.getConnectionInfo();
if (wifiInfo != null) {
macAddress = wifiInfo.getMacAddress();
}
}
另外需要添加權限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission
android:name="android.permission.LOCAL_MAC_ADDRESS"
tools:ignore="ProtectedPermissions" />
2:6.0以上
通過NetworkInterface獲取,
NetworkInterface intf;
Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
while (interfaces.hasMoreElements()) {
intf = interfaces.nextElement();
if (null == intf ||
!TextUtils.equals("wlan0", intf.getName().toLowerCase())
) {
continue;
}
final byte[] mac = intf.getHardwareAddress();
if (mac != null) {
StringBuilder buf = new StringBuilder();
for (byte aMac : mac) {
buf.append(String.format("%02X:", aMac));
}
if (buf.length() > 0) {
buf.deleteCharAt(buf.length() - 1);
}
macAddress = buf.toString();
}
break;
}
3:由于10.0后引入了隨機mac的概念,
方法2會在部分機型上面回傳的是隨機mac.
這里目前只能通過強管控deviceOnwer的狀況下呼叫以下方法來獲取設備的wifimac,
devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
componentName = new ComponentName(this, MyDeviceAdminReceiver.class);
String wifiMac = devicePolicyManager.getWifiMacAddress(componentName) == null ? "" : devicePolicyManager.getWifiMacAddress(componentName);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/292376.html
標籤:其他
