我写了一个应用程序,可以轻松地将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);
}
答案 0 :(得分:2)
我相信你需要调用wifi.saveConfiguration();将两个配置添加到WifiManager后。