Android WifiManager.addNetwork () retorna -1

Eu estou escrevendo um aplicativo Android que irá se conectar a um ponto de acesso WPA específico, quando conectado, ele irá emitir uma chamada http. Não salvará a configuração de rede. Eu li quase todos os posts sobre estouro de pilha na conexão à rede wifi, mas não consigo encontrar a resposta que funciona para mim. Aqui está o código que estou usando para conectar ..

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

No entanto netId é sempre -1. Eu tentei em dois telefones diferentes (ICS: HTC Rezound e GingerBread: Motorola DroidX). Ambos mostram exatamente os mesmos resultados. O que estou fazendo de errado?

Edit: Eu tentei o mesmo código com o ponto de acesso WPA2 e obtive resultados muito estranhos. Quando este código foi executado, a primeira vez que retornaria -1, mas se eu chamo o mesmo método na segunda vez com um atraso de 1 segundo, ele retornaria o netId válido. Então as perguntas são

Por que o código acima não se conecta ao wpa?No wpa2, por que preciso chamar o método acima duas vezes para me conectar? Edit: eu observei que eu tive que ligar várias vezes para se conectar. Às vezes, levaria 3-4 vezes para se conectar. Então, por enquanto eu estou em loop até adicionar config retorna> 0 id.

questionAnswers(4)

yourAnswerToTheQuestion