Android WifiManager.addNetwork () zwraca -1

Piszę aplikację dla systemu Android, która połączy się z konkretnym punktem dostępu WPA, po czym wyśle ​​połączenie http. Nie zapisze konfiguracji sieci. Przeczytałem prawie każdy post na temat przepełnienia stosu podczas łączenia się z siecią Wi-Fi, ale nie mogę znaleźć odpowiedzi, która działa dla mnie. Oto kod, którego używam do łączenia się ..

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

Jednak netId ma zawsze wartość -1. Próbowałem go na dwóch różnych telefonach (ICS: HTC Rezound i GingerBread: Motorola DroidX). Oba pokazują dokładnie takie same wyniki. Co ja robię źle?

Edytuj: Próbowałem tego samego kodu z punktem dostępu WPA2 i otrzymałem bardzo dziwne wyniki. Gdy ten kod był uruchamiany, po raz pierwszy zwracał -1, ale jeśli wywołam tę samą metodę po raz drugi z opóźnieniem 1 sekundy, zwróci poprawny netId. Tak więc są pytania

dlaczego powyższy kod nie łączy się z wpa?w wpa2, dlaczego muszę dwukrotnie wywoływać powyższą metodę, aby uzyskać połączenie? Edytuj: Zauważyłem, że musiałem połączyć się wiele razy, aby uzyskać połączenie. Czasami połączenie trwa 3-4 razy. Więc na razie zapętlam, aż dodam zwroty config> 0 id.

questionAnswers(4)

yourAnswerToTheQuestion