Android WifiManager.addNetwork () gibt -1 zurück

Ich schreibe eine Android-App, die eine Verbindung zu einem bestimmten WPA-Zugangspunkt herstellt. Wenn eine Verbindung hergestellt wird, wird ein http-Aufruf ausgegeben. Die Netzwerkkonfiguration wird nicht gespeichert. Ich habe fast jeden Beitrag über den Stapelüberlauf beim Herstellen einer Verbindung zum WLAN-Netzwerk gelesen, kann jedoch keine Antwort finden, die für mich funktioniert. Hier ist der Code, den ich verwende, um eine Verbindung herzustellen.

    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 ist jedoch immer -1. Ich habe es auf zwei verschiedenen Handys ausprobiert (ICS: HTC Rezound und GingerBread: Motorola DroidX). Beide zeigen genau die gleichen Ergebnisse. Was mache ich falsch?

Bearbeiten: Ich habe denselben Code mit dem WPA2-Zugangspunkt ausprobiert und habe sehr seltsame Ergebnisse erzielt. Wenn dieser Code zum ersten Mal ausgeführt wurde, gab er -1 zurück, aber wenn ich dieselbe Methode mit einer Verzögerung von 1 Sekunde zum zweiten Mal aufrufe, gab er eine gültige netId zurück. Die Fragen sind also

warum verbindet sich der obige code nicht mit wpa?Warum muss ich in wpa2 die obige Methode zweimal aufrufen, um eine Verbindung herzustellen? Bearbeiten: Ich habe festgestellt, dass ich mehrere Male eine Verbindung herstellen musste, um eine Verbindung herzustellen. Manchmal dauerte es 3-4 Mal, um eine Verbindung herzustellen. Im Moment schleife ich also, bis das Hinzufügen von config> 0 id zurückgibt.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage