我们使用 Wifimanger getConnectionInfo() 方法来获取连接的 wifi 的 SSID 和 BBSID。 但从 Andorid API level 31 开始,Android 已弃用 getConnectionInfo() 方法。
他们提供的使用 getTransportInfo() 的解决方案需要最低 Android 级别 29,这是我们无法确定的目标,因为我们 20% 的用户仍然使用低于 29 的 Android API 级别。
有人可以帮助使用替代方法来连接 wifi。
https://developer.android.com/reference/android/net/wifi/WifiManager#getConnectionInfo()
您可以使用
NetworkCallback()
代替。
您需要将 FLAG_INCLUDE_LOCATION_INFO
传递给 NetworkCallback()
,否则您只会得到“未知 SSID”。
此外,您需要
ACCESS_NETWORK_STATE
和 ACCESS_FINE_LOCATION
权限才能使其正常工作。
val request = NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.build()
val networkCallback = object : ConnectivityManager.NetworkCallback(
FLAG_INCLUDE_LOCATION_INFO) {
override fun onCapabilitiesChanged(
network: Network,
networkCapabilities: NetworkCapabilities
) {
super.onCapabilitiesChanged(network, networkCapabilities)
val wifiInfo = networkCapabilities.transportInfo as WifiInfo
val ssid = wifiInfo.ssid
}
}
connManager.registerNetworkCallback(request, networkCallback)
请参阅此处。