从 ConnectivityManager NetworkCapability 同步获取 Wifi SSID

kev*_*liu 9 android connectivity ssid wifi

目前,获取 Android 设备连接的 Wifi 网络 SSID 最流行的方法是使用 WifiManager 的 getConnectionInfo() 方法。但是,该方法在 API 级别 31 中已被弃用。根据文档,我们预计使用 ConnectivityManager 的 getNetworkCapability() 方法来获取 Wifi 信息。不幸的是,文档指出

这将删除 NetworkCapability#getTransportInfo() 中嵌入的 TransportInfo 中的所有位置敏感数据。某些传输信息实例(例如 WifiInfo)包含位置敏感信息。系统将记录检索此位置敏感信息(取决于应用程序的位置权限)。要在 TransportInfo 中包含任何位置敏感数据,请使用带有 NetworkCallback#FLAG_INCLUDE_LOCATION_INFO 标志的 NetworkCallback。

现在获取 SSID 的唯一方法似乎是使用 FLAG_INCLUDE_LOCATION_INFO 标志注册 NetworkCallback 并等待回调被调用。这不是旧方法的合适替代品,因为旧方法是同步的并且可以按需调用。目前是否有任何方法可以同步获取 Wifi SSID,而不使用已弃用的 getConnectionInfo() 方法?

958*_*958 3

我也有这个问题。需要同步查询吗?您能不能只将最后一个 SSID 输出存储onCapabilitiesChanged()在 livedata 对象中,是一个非常好的资源,可以帮助您做到这一点。不幸的是,我的代码仍然给我使用传输信息的 SSID 信息为空。你能分享你的代码吗?