Ran*_*dav 7 android wifimanager android-wifi android-11
我们使用 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)
Run Code Online (Sandbox Code Playgroud)
请参阅:https://developer.android.com/reference/kotlin/android/net/wifi/WifiManager#getConnectionInfo()。
| 归档时间: |
|
| 查看次数: |
5958 次 |
| 最近记录: |