Android不恰当地忘记了无线网络

Android不恰当地忘记了无线网络,android,wireless,Android,Wireless,我已经编写了一个应用程序,可以轻松地将Android设备连接到我们公司的各种无线网络。它打算在设备解除绑定并与应用程序套件的其余部分一起设置时运行一次 问题是,有时,设备会忘记网络而不被告知这样做。不幸的是,我无法复制这一点。我希望我错过了一些API调用,这里的Android专家可以帮我找到 下面的代码来自我的run once无线初始化应用程序,网络名称和密钥已更改。有人能看到我在这里做错了什么吗 编辑:我在LG Ally上观察到这种行为的设备。我希望这是我自己代码中的一个bug,所以这就是我的

我已经编写了一个应用程序,可以轻松地将Android设备连接到我们公司的各种无线网络。它打算在设备解除绑定并与应用程序套件的其余部分一起设置时运行一次

问题是,有时,设备会忘记网络而不被告知这样做。不幸的是,我无法复制这一点。我希望我错过了一些API调用,这里的Android专家可以帮我找到

下面的代码来自我的run once无线初始化应用程序,网络名称和密钥已更改。有人能看到我在这里做错了什么吗

编辑:我在LG Ally上观察到这种行为的设备。我希望这是我自己代码中的一个bug,所以这就是我的出发点

@Override
public void onCreate(Bundle savedInstanceState)
{
    WifiConfiguration n1Config = new WifiConfiguration();
    n1Config.SSID = "\"networkOne\"";
    n1Config.preSharedKey = "\"...\"";
    n1Config.status = WifiConfiguration.Status.ENABLED;

    WifiConfiguration n2Config = new WifiConfiguration();
    n2Config.SSID = "\"networkTwo\"";
    n2Config.hiddenSSID = true;
    n2Config.wepKeys[0] = "...";
    n2Config.wepTxKeyIndex = 0;
    n2Config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
    n2Config.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
    n2Config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
    n2Config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
    n2Config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
    n2Config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
    n2Config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
    n2Config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
    n2Config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
    n2Config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
    n2Config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
    n2Config.status = WifiConfiguration.Status.ENABLED;

    WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);

    int n1ID = wifiManager.addNetwork(n1Config);
    wifiManager.enableNetwork(n1ID, false);

    int n2ID = wifiManager.addNetwork(n2Config);
    wifiManager.enableNetwork(n2ID, false);
}

我相信你需要调用wifi.saveConfiguration();在您将两种配置都添加到WifiManager之后。

是否会像Android能够记住的网络数量有限这样简单?例如,Android只会记住X个网络,在某些情况下,如果用户自上次使用公司网络以来进入X个网络的范围,则您的网络会被挤出网络“缓存”。诚然,这似乎不太可能,但可以很容易地测试。你确定没有人告诉它忘记它吗?啊,一个不可原谅的失误。这几乎肯定是我的问题。我要做一些测试。非常感谢你的回答。好的。让我知道这是否是解决方案。我自己也开始了Android开发。