android wifiManager.addNetwork gibt -1 zurück

Ich Schreibe eine android-app, die die Verbindung zu einem bestimmten WPA-access-point, wenn er angeschlossen ist, es wird eine http-Aufruf. Es wird nicht speichern Sie die Netzwerk-config.
Ich lese fast jeden Beitrag auf stack overflow auf die Verbindung zu wifi-Netzwerk, kann aber keine Antwort gefunden die für mich funktioniert. Hier ist der code, den ich verwende verbinden..

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

Jedoch netId ist immer -1. Ich habe es versucht auf zwei verschiedenen Handys (ICS:HTC Rezound und Lebkuchen:Motorola DroidX). Beide zeigen genau die gleichen Ergebnisse.
Was mache ich falsch ?

Edit: ich habe versucht den gleichen code mit WPA2, access point und bekam sehr seltsame Ergebnisse. Wenn dieser code ausgeführt wurde, zum ersten mal würde es -1 zurück, wenn ich aber den Aufruf derselben Methode zweiten mal mit einer Verzögerung von 1 Sekunde, würde es wieder gültig netId. Also die Fragen sind

  1. warum obige code nicht verbinden zu wpa ?
  2. in wpa2, warum muss ich call-oben-Methode zweimal zu gelangen ? Edit: ich habe beobachtet, dass ich hatte, um eine Verbindung mehrfach zu verbinden. Manchmal dauert es auch 3-4 mal auf verbinden. So jetzt bin ich Schleife, bis das hinzufügen von config gibt >0 id.

InformationsquelleAutor der Frage Mukesh Aggarwal | 2012-08-18

Schreibe einen Kommentar