我正在开发一个 android 应用程序,它涉及在范围内连接到特定的 wifi。完成一些操作后,我会尝试连接回原来的 wifi。出于某种奇怪的原因,它按我的意愿连接到我原来的 wifi,但大约 30 秒后,它断开了连接。当我检查设备上的 wifi 设置时,它显示 wifi 已禁用。
总结:
1. 连接 Wifi W1。
2. 当 Wifi W2 在范围内时,连接到那个(使用 SSID)但是,记住 W1 的 SSID 以备后用。
3. 断开与 W2 的连接并在 wifi 配置列表中查找 W1(使用 SSID)。找到后,连接到那个。
所有三个步骤都有效,但由于某种原因,在第 3 步成功后不久(< 1 分钟)设备断开并禁用了与 W1 的连接。只有当我通过代码更改 wifi 连接时才会发生这种情况。这是我的代码的样子: “net”变量包含原始 wifi 连接的 SSID (W1) 的 SSID 值。有谁知道为什么我会在重新连接到原始 Wifi 后不久就断开连接?
if(net!=""){
List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
for( WifiConfiguration i : list ) {
if(i.SSID != null && i.SSID.contains(net)) {
wifiManager.disconnect();
wifiManager.enableNetwork(i.networkId, true);
wifiManager.setWifiEnabled(true);
break;
}
}
}
最佳答案
我有一个建议,我不确定这是否能解决问题,但值得一试
在下面的代码中,如果你放置
if(net!=""){
List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
for( WifiConfiguration i : list ) {
if(i.SSID != null && i.SSID.contains(net)) {
wifiManager.disconnect();
//place a sleep on thread so that the underlying hardware gets some time to disconnect
Thread.sleep(10000);
//Now trying connecting to the previous network. Also try increasing the time to wait if 5 seconds is not working.
wifiManager.enableNetwork(i.networkId, true);
wifiManager.setWifiEnabled(true);
break;
}
}
}
编辑:
它似乎与超过 10 秒的间隔一起工作。我认为这个时间间隔取决于设备的 WiFi 芯片组,它需要一些时间来断开当前网络并连接到其他网络。此外,如果设备的芯片组质量较低,则可能需要更长的时间。此外,我认为如果设备的芯片组质量较高,则速度会快得多。
关于android - 在 Android 中连接到 wifi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15851962/