我的应用程序里有mac地址。当targetSdkVersion 29岁时,一切都是正确的,但是当targetSdkVersion更新到31时,我无法获得mac地址。
private fun getMacAddress(): String =
NetworkInterface.getNetworkInterfaces().toList()
.firstOrNull { it.name.equals("wlan0", ignoreCase = true) }?.let {
it.hardwareAddress?.let { macBytes ->
StringBuilder().apply {
for (b in macBytes) {
append(String.format("%02X:", b))
}
if (isNotEmpty()) {
deleteCharAt(lastIndex)
}
}
}?.toString() ?: run {
"00:00:00:00:00:00"
}
} ?: "00:00:00:00:00:00"
发布于 2022-01-04 05:43:06
总之,你不能。
根据Android开发人员- MAC地址在Android 11中的可用性变化的说法,如果你的目标是安卓11,他们阻止了对MAC地址的访问:
此外,非特权应用程序无法访问设备的MAC地址;只有带有IP地址的网络接口是可见的。这会影响
getifaddrs()
和NetworkInterface.getHardwareAddress()
方法,以及发送RTM_GETLINK
Netlink消息。
同时,来自NetworkInterface.getHardwareAddress文档
例如,当具有
targetSdkVersion >= android.os.Build.VERSION_CODES.R.
的非系统应用程序调用时,此方法通常会返回null。
https://stackoverflow.com/questions/70574459
复制相似问题