Android不正确地忘记了无线网络

时间:2011-04-29 17:08:11

标签: android wireless

我写了一个应用程序,可以轻松地将Android设备连接到我们公司的各种无线网络。当设备未拆箱并与我们的应用程序套件的其余部分一起设置时,它应该运行一次。

问题在于,有时,设备会忘记网络而不会被告知这样做。遗憾的是,我无法重现这一点。我希望我错过了一些API专家,这里的Android大师可以帮我找到。

以下代码来自我的一次性无线初始化应用程序,网络名称和密钥已更改。谁能看到我在这里做错了什么?

编辑:我观察到此行为的设备是LG Ally。我希望这是我自己的代码的错误,所以这就是我开始的地方。

@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);
}

1 个答案:

答案 0 :(得分:2)

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