如何在Android上切换Wi-Fi网络而不禁用以前的网络?

如何在Android上切换Wi-Fi网络而不禁用以前的网络?,android,networking,android-wifi,Android,Networking,Android Wifi,我在运行KitKat的三星设备上遇到了这个问题。它似乎不会影响运行棒棒糖的Nexus设备 我使用此代码在Wi-Fi网络之间切换: private void switchToNetwork(String ssid) { WifiConfiguration configuration = new WifiConfiguration(); configuration.SSID = String.format(Locale.US, "\"%s\"", ssid); // ... other

我在运行KitKat的三星设备上遇到了这个问题。它似乎不会影响运行棒棒糖的Nexus设备

我使用此代码在Wi-Fi网络之间切换:

private void switchToNetwork(String ssid) {
  WifiConfiguration configuration = new WifiConfiguration();
  configuration.SSID = String.format(Locale.US, "\"%s\"", ssid);
  // ... other configuration changes such as password and cipher
  manager.disconnect();
  manager.enableNetwork(params[0].configuration.networkId, true);
  manager.reconnect();
}
但是,我注意到,如果我在运行此代码之前连接到Wi-Fi网络,这些三星设备会将之前网络的状态更改为“关闭”。这是因为我调用enableNetwork时的第二个参数
disableOthers
设置为true

“关闭”状态意味着如果另一个网络关闭,该网络将不会自动切换到。出于我的目的,我正在手动切换回网络,但在某些情况下(例如应用程序崩溃),可能需要自动切换网络

但是,当我将
disableOthers
更改为false时,它并不总是将我更改为在switchToNetwork()中请求的SSID。它通常会停留在上一个SSID上


那么:如何保证在不禁用以前的网络的情况下切换到新网络?

一种方法是缓存当前网络ID

您可以使用
getConnectionInfo.getNetworkId
API存储当前连接的网络ID,并将其临时存储


现在连接到所需的网络,完成后使用之前存储的ID连接回以前的网络。

一种方法是缓存当前网络ID

您可以使用
getConnectionInfo.getNetworkId
API存储当前连接的网络ID,并将其临时存储


现在连接到您想要的网络,当您使用之前存储的ID连接回以前的网络。

有没有办法禁用当前活动的wifi网络并连接到新网络这里有一个{WifiManager#disableNetwork}API,它将网络ID作为参数。还有更多的API,看看有没有办法禁用当前活动的wifi网络并连接到新网络这里有一个{WifiManager#disableNetwork}API,它将网络ID作为参数。还有更多的API,请看一看