android wifiManager.addNetwork retourne -1

Je suis en train d'écrire une application android qui va se connecter à un WPA point d'accès, une fois connecté, il sera question d'un appel http. Il ne sera pas sauvegarder la config réseau.
J'ai lu presque tous les post sur un débordement de pile sur la connexion à un réseau wifi, mais ne peut pas trouver la réponse qui fonctionne pour moi. Ici c'est le code que j'utilise pour se connecter..

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

Cependant netId est toujours -1. J'ai essayé sur deux téléphones différents (ICS:HTC Rezound et de pain d'épice:Motorola DroidX). Les deux montrent exactement les mêmes résultats.
Ce que je fais mal ?

Edit: j'ai essayé même code WPA2 point d'accès et est devenu très bizarre résultats. Lorsque ce code est exécuté, pour la première fois, il serait de retour -1, mais si je l'appelle même méthode deuxième fois avec un délai de 1 seconde, il serait de retour valide netId. Donc les questions sont

  1. pourquoi ne code ci-dessus de ne pas se connecter à wpa ?
  2. en wpa2, pourquoi dois-je appeler méthode ci-dessus deux fois pour se connecter ? Edit: j'ai observé que j'avais à se connecter plusieurs fois pour se connecter. Parfois, il faudrait 3-4 fois pour se connecter. Donc pour l'instant je suis en boucle jusqu'à l'ajout de config de retour >0 id.
Avez-vous le comprendre? Je rencontre exactement le même problème...
Je vais avoir des problèmes similaires. Mon addNetwork échouent avec -1. Quelqu'un a résoudre cela?

OriginalL'auteur Mukesh Aggarwal | 2012-08-18