android - 从 ConnectivityManager NetworkCapabilities 同步获取 Wifi SSID

标签 android wifi connectivity ssid

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

This will remove any location sensitive data in TransportInfo embedded in NetworkCapabilities#getTransportInfo(). Some transport info instances like WifiInfo contain location sensitive information. Retrieving this location sensitive information (subject to app's location permissions) will be noted by system. To include any location sensitive data in TransportInfo, use a NetworkCallback with NetworkCallback#FLAG_INCLUDE_LOCATION_INFO flag.


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

最佳答案

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

关于android - 从 ConnectivityManager NetworkCapabilities 同步获取 Wifi SSID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71281724/

相关文章:

android - 使用 execvp 子调用转储 logcat

macos - 如何检查互联网连接 OSX

android - 应用程序-通过android中的Wifi直接共享文件

android - ConnectivityManager getActiveNetworkInfo() 始终为空,即使数据流量处于 Activity 状态也是如此

安卓连接/网络配置

android - WakeLock 在仍然举行的情况下完成

java - Eclipse bin文件夹位置

linux - 在SDIO接口(interface)中如何注册中断

amazon-ec2 - 如何从亚马逊vpc连接到外界?

Java Android 状态栏不会保持隐藏状态