【发布时间】:2021-03-12 11:28:57
【问题描述】:
我们的应用中有一个功能 (TargetSDK = 30),它可以扫描当前 wifi 网络中的设备。 我们做的其中一件事就是调用
Runtime.getRuntime().exec("/system/bin/ip neigh show")
end 从标准输出中提取 MAC 地址。 该代码在 Android Q/10 之前运行良好,但在运行 Anroid 11 的 Pixel 2 上,外部进程立即退出,退出代码为 1(不引发异常)
另一方面,调用 /system/bin/ping 运行没有任何问题。
我查看了 Android 11 文档 (https://developer.android.com/about/versions/11),但是 找不到有关新限制的任何提示。
有人知道吗?
【问题讨论】:
-
请注意,任何特定的设备型号都不需要任何特定的命令行二进制文件,更不用说在任何特定的目录中了。
-
@CommonsWare 我知道,但是二进制文件在那里并且可以从 adb shell 运行而没有问题
-
“但二进制文件在那里”——在您正在测试的特定设备上,是的。大约有 25 亿台 Android 设备。 “我检查了 Android 11 文档”——设备上的命令行二进制文件不是 SDK 的一部分。一般来说,那里的变化不会被记录下来。 “有人有线索吗?” -- 识别附近 WiFi 设备的能力代表了隐私泄露,因为您可以使用该信息来识别设备的位置。因此,他们可能只是限制了哪些进程可以运行该二进制文件。
-
@CommonsWare 你说的一切都是对的,但这不是我问的,你是在告诉我我已经知道的事情。谢谢,不过
标签: android networking