- 说明**
在Android-12中,我无法使用ConnectivityManager.NetworkCallback
类中的onCapabilitiesChanged
获取WIFI SSID。在Android-12中,getConnectionInfo已弃用。因此,正如Android文档所建议的,我正在尝试使用onCapabilitiesChanged
获取WifiInfo
对象。
像这样,
@Override
public void onCapabilitiesChanged(@NonNull Network network, @NonNull NetworkCapabilities networkCapabilities) {
super.onCapabilitiesChanged(network, networkCapabilities);
WifiInfo wifiInfo = (WifiInfo) networkCapabilities.getTransportInfo();
}
但是,当我打印WifiInfo
对象时,它将打印**SSID:〈未知ssid〉**和getHiddenSSID
返回真。
意外行为是,
Android-12设备连接一个WIFI(例如ABC)
- 当我尝试使用
getConnectionInfo
获取WIFI SSID时,它返回SSID:ABC和获取隐藏SSID:假的 - 但是,对于同一个网络,当我尝试使用
onCapabilitiesChanged
获取WIFI SSID时,它返回SSID:〈未知ssid〉和getHiddenSSID:真
注:提供地点权限。
4条答案
按热度按时间am46iovg1#
经过几天的时间,终于找到了为什么我没有得到SSID在
onCapabilitiesChanged
。在创建对象时,我们需要在
ConnectivityManager.NetworkCallback
构造函数中传递FLAG_INCLUDE_LOCATION_INFO
。在默认构造函数中,位置敏感信息被隐藏,因为我们无法在
onCapabilitiesChanged
中获取SSID。一旦我们创建了带有标志的NetworkCallback
对象,我们将获得SSID。链接
h22fl7wq2#
获取SSID和BSSID API31 Xamarin C#示例
所需权限:更改网络状态、访问精细位置
如果API〈31TransportInfo将返回空值
点击Android API参考.连接管理器.网络回调(int)!
jfewjypa3#
将
new NetworkCallback()
替换为new NetworkCallback(ConnectivityManager.NetworkCallback.FLAG_INCLUDE_LOCATION_INFO)
。示例代码:
参考链接:
网络回调#网络回调(整数)
r55awzrz4#
此方法适用于所有Android版本,但适用于Android 8. 0(Oreo)和更高版本,**您需要有定位服务(GPS)以访问Wi-Fi SSID。**此外,您需要在运行时请求
ACCESS_COARSE_LOCATION
和ACCESS_FINE_LOCATION
权限,并在清单文件中声明它们。如果您希望在后台访问Wi-Fi SSID,你可以写一个前台服务来处理这个问题。}