我正在开发一个用户必须遵循以下步骤的应用程序:
- 将手机连接到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 的工作示例。
有人已经做到了吗?
预先感谢您的帮助。