Android WifiManager.addNetwork () возвращает -1
Я пишу приложение для Android, которое будет подключаться к определенной точке доступа WPA, при подключении оно вызовет http-вызов. Это не сохранит конфигурацию сети. Я прочитал почти каждое сообщение о переполнении стека при подключении к сети Wi-Fi, но не могу найти ответ, который работает для меня. Вот код, который я использую для подключения ..
WifiConfiguration wc = new WifiConfiguration();
wc.allowedAuthAlgorithms.clear();
wc.allowedGroupCiphers.clear();
wc.allowedPairwiseCiphers.clear();
wc.allowedProtocols.clear();
wc.allowedKeyManagement.clear();
wc.SSID = "\"".concat("<ssid>").concat("\"");
wc.preSharedKey = "\"".concat("<password>").concat("\"");
wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN); // For WPA2
wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA); // For WPA
wc.priority = 0;
//wc.hiddenSSID = true;
wc.status = WifiConfiguration.Status.ENABLED;
// connect to and enable the connection
WifiManager wifiManager = (WifiManager) getSystemService(this.WIFI_SERVICE);
int netId = wifiManager.addNetwork(wc);
boolean wifiEnabled = wifiManager.enableNetwork(netId, true);
wifiManager.setWifiEnabled(true);
Log.d("opener", "addNetwork returned " + netId);
if (netId > 0) {
wifiId = netId;
}
Однако netId всегда равен -1. Я пробовал это на двух разных телефонах (ICS: HTC Rezound и GingerBread: Motorola DroidX). Оба показывают одинаковые результаты. Что я делаю неправильно?
Изменить: я попробовал тот же код с точкой доступа WPA2 и получил очень странные результаты. Когда этот код был запущен, первый раз он вернул бы -1, но если я вызову тот же метод во второй раз с задержкой в 1 секунду, он вернет действительный netId. Итак, вопросы
why does above code not connect to wpa ? in wpa2, why do I need to call above method twice to get connected ? Edit: I observed that I had to connect multiple times to get connected. Sometimes it would take 3-4 times to connect. So for now I am looping until adding config returns >0 id.