目前,获取Android设备连接的Wifi网络的SSID最流行的方法是使用WifiManager的getConnectionInfo()方法。然而,该方法在API级别31中已被弃用。根据文档,我们应该使用ConnectivityManager的getNetworkCapabilities()方法来获取Wifi信息。不幸的是,文档中指出:
“这将删除NetworkCapabilities#getTransportInfo()中嵌入的TransportInfo中的任何位置敏感数据。一些传输信息实例(如WifiInfo)包含位置敏感信息。检索此位置敏感信息(受应用程序位置权限限制)将被系统记录。要在TransportInfo中包含任何位置敏感数据,请使用带有NetworkCallback#FLAG_INCLUDE_LOCATION_INFO标志的NetworkCallback。”
现在似乎唯一的方法是通过注册一个带有FLAG_INCLUDE_LOCATION_INFO标志的NetworkCallback,并等待回调被调用来获取SSID。这并不是旧方法的合适替代品,因为旧方法是同步的,可以按需调用。目前是否有任何方法可以在不使用已弃用的getConnectionInfo()方法的情况下同步获取Wifi SSID?
“这将删除NetworkCapabilities#getTransportInfo()中嵌入的TransportInfo中的任何位置敏感数据。一些传输信息实例(如WifiInfo)包含位置敏感信息。检索此位置敏感信息(受应用程序位置权限限制)将被系统记录。要在TransportInfo中包含任何位置敏感数据,请使用带有NetworkCallback#FLAG_INCLUDE_LOCATION_INFO标志的NetworkCallback。”
现在似乎唯一的方法是通过注册一个带有FLAG_INCLUDE_LOCATION_INFO标志的NetworkCallback,并等待回调被调用来获取SSID。这并不是旧方法的合适替代品,因为旧方法是同步的,可以按需调用。目前是否有任何方法可以在不使用已弃用的getConnectionInfo()方法的情况下同步获取Wifi SSID?