能否以编程方式获取运行 Android 6.0+ 的设备的 MAC 地址?
根据this https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-hardware-id,
为了给用户提供更好的数据保护,从这里开始
发布后,Android 删除了对设备本地的编程访问
使用 Wi-Fi 和蓝牙 API 的应用程序的硬件标识符。这
WifiInfo.getMacAddress() 和 BluetoothAdapter.getAddress() 方法
现在返回常量值 02:00:00:00:00:00。
这是否意味着在 Android 6.0+ 中无法获取设备的 MAC 地址?如果可以的话,能告诉我如何在Android Studio中实现吗?
Also, 这个答案 https://stackoverflow.com/a/11705949仅适用于Android版本6.0以下的设备
您可以使用替代方法在 Android 6.0 设备上获取 MAC 地址。
首先将互联网用户权限添加到 AndroidManifest.xml 中:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
第二,
try {
// get all the interfaces
List<NetworkInterface> all = Collections.list(NetworkInterface.getNetworkInterfaces());
//find network interface wlan0
for (NetworkInterface networkInterface : all) {
if (!networkInterface.getName().equalsIgnoreCase("wlan0")) continue;
//get the hardware address (MAC) of the interface
byte[] macBytes = networkInterface.getHardwareAddress();
if (macBytes == null) {
return "";
}
StringBuilder res1 = new StringBuilder();
for (byte b : macBytes) {
//gets the last byte of b
res1.append(Integer.toHexString(b & 0xFF) + ":");
}
if (res1.length() > 0) {
res1.deleteCharAt(res1.length() - 1);
}
return res1.toString();
}
} catch (Exception ex) {
ex.printStackTrace();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)