首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >targetSdkVersion 31岁时无法获得mac地址

targetSdkVersion 31岁时无法获得mac地址
EN

Stack Overflow用户
提问于 2022-01-04 05:37:27
回答 2查看 1K关注 0票数 0

我的应用程序里有mac地址。当targetSdkVersion 29岁时,一切都是正确的,但是当targetSdkVersion更新到31时,我无法获得mac地址。

代码语言:javascript
运行
复制
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"
EN

Stack Overflow用户

发布于 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。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70574459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档