【问题标题】:WifiManager enableNetwork reverts to previous network after a few secondsWifiManager enableNetwork 几秒钟后恢复到以前的网络
【发布时间】:2019-03-23 14:26:24
【问题描述】:

在 Android 8.1.0 及更高版本上,我遇到了一个重大问题。 当使用enableNetwork 连接到没有互联网的网络时,Android 会在几秒钟后决定将设备恢复到之前的网络。

我有意连接到所需的网络,并计划使用bindToNetwork 来确保所有流量都通过网络,但是 Android 似乎忽略了绑定并在之后很快断开连接。

不幸的是,我在这里看到了这个问题的一些排列方式,但都没有得到答复。

我正在使用以下代码创建与网络的连接。我可以看到网络正在连接。

WifiConfiguration conf = new WifiConfiguration();
conf.SSID = desiredSSID;
if (desiredNetwork.has("password")) {
    conf.preSharedKey = String.format("\"%s\"", desiredNetwork.get("password"));
}
conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
conf.allowedProtocols.set(WifiConfiguration.Protocol.RSN);

int networkID = wifiManager.addNetwork(conf);
wifiManager.enableNetwork(networkID, true);

是否有可用的选项来禁用此行为,因为我有意连接到没有可用互联网的网络。

谢谢。

【问题讨论】:

    标签: android wifimanager android-connectivitymanager


    【解决方案1】:

    我能够通过从已配置的 wifi 列表中删除现有配置来解决此问题。网络不会与新配置断开连接。

    List<WifiConfiguration> wifiConfigurationList = wifiManager.getConfiguredNetworks();
    
    for (WifiConfiguration removeConfig : wifiConfigurationList) {
        if (removeConfig.SSID.equals(desiredSSID)) {
            wifiManager.removeNetwork(removeConfig.networkId);
            break;
        }
    }
    

    只需再次添加网络,如上所述即可解决问题。

    【讨论】:

    • 这不会删除用户的“已保存”网络,因此他们必须重新输入网络信息才能重新连接?对用户来说似乎是一件危险/不友善的事情。
    • 在我的情况下,这是可以接受的,因为 Wi-Fi 仅用于设置广播,而不是用户自己的网络,而是物联网设备。此外,该应用只能删除它添加的配置。
    猜你喜欢
    • 2019-05-06
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 1970-01-01
    相关资源
    最近更新 更多