【发布时间】:2020-03-05 06:24:45
【问题描述】:
我正在开发一个用户必须按照以下步骤操作的应用程序:
- 将手机连接到wifi;
- 将手机从连接对象连接到专用热点。
当用户连接到连接对象的专用热点时,应用程序会执行一些 HTTP 请求以对其进行配置。然后,我想将应用程序自动重新连接到步骤 1 的全局 wifi。
从 API 21 到 API 28,这个功能很容易实现,因为我知道我也想重新连接手机的 SSID。几行代码就可以搞定:
private fun changeCurrentWifiNetworkLegacy(ssidToConnect: String) {
val wifiManager = applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
var ssidIdentifier: Int? = null
wifiManager.configuredNetworks?.forEach { config ->
Log.d("SSID", config.SSID)
if (config.SSID == "\"${ssidToConnect}\"") {
ssidIdentifier = config.networkId
}
}
ssidIdentifier?.let { id ->
wifiManager.enableNetwork(id, true)
}
}
根据这篇文章,这个简单的代码在 API 29 上不再起作用:https://developer.android.com/about/versions/10/privacy/changes#configure-wifi
根据文章,现在,我应该使用 2 个类:WifiNetworkSpecifier 和/或 WifiNetworkSuggestion。
很遗憾,我找不到使用这些类来将用户连接到之前配置的 SSID 的工作示例。
有人已经做到了吗?
提前感谢您的帮助。
【问题讨论】:
标签: android android-wifi android-connectivitymanager