android - 无法在 Android 12 中使用 onCapabilitiesChanged 获取 WIFI SSID
问题描述
描述
我无法使用Android-12onCapabilitiesChanged
中的类中的 WIFI SSID。ConnectivityManager.NetworkCallback
在 Android-12 中,不推荐使用 getConnectionInfo。因此,正如 android 文档所建议的那样,我正在尝试WifiInfo
使用onCapabilitiesChanged
.
像这样,
@Override
public void onCapabilitiesChanged(@NonNull Network network, @NonNull NetworkCapabilities networkCapabilities) {
super.onCapabilitiesChanged(network, networkCapabilities);
WifiInfo wifiInfo = (WifiInfo) networkCapabilities.getTransportInfo();
}
但是,当我打印WifiInfo
对象时。它将打印SSID: <unknown ssid>并getHiddenSSID
返回 true。
意外的行为是,
Android-12 设备与一个 WIFI 连接(例如 ABC)
- 当我尝试使用
getConnectionInfo
. 它返回 SSID: ABC 和 getHiddenSSID : false - 但是,对于同一个网络,当我尝试使用 获取 WIFI SSID 时
onCapabilitiesChanged
,它会返回 SSID: <unknown ssid> 和 getHiddenSSID : true
注意:提供位置权限。
解决方案
花了几天时间,终于找到了为什么我没有进入 SSID 的原因onCapabilitiesChanged
。
我们需要在创建对象时传入FLAG_INCLUDE_LOCATION_INFO
构造ConnectivityManager.NetworkCallback
函数。
在默认构造函数中,位置敏感信息是隐藏的,因为我们无法获取 SSID onCapabilitiesChanged
。一旦我们NetworkCallback
使用标志创建对象,我们将获得 SSID。
推荐阅读
- javascript - 使用反应路由器时切换状态
- sql - PostgreSQL 可以使用索引进行逐行比较吗?
- python - 如何使用 pymongo 将具有空值的文档插入 mongodb?
- python - 单独文件中的 FastAPI / Pydantic 循环引用
- performance - 如何在 Kotlin 的多个属性初始化中使用计算?
- javascript - 是否有一个内置函数会在每个间隔执行这个 DOM 操作?
- python - 如何告诉我的 Mac 使用计算机上安装的最新版本的 Python?
- python - 找不到使用 selenium (Python 3.7)单击 href 链接的方法
- node.js - Node.js 中间件读取多个猫鼬集合
- c# - 正确配置以增加 Umbraco 处理内存