Comment et quoi configurer sur Android WifiConfiguration.preSharedKey pour vous connecter au réseau WiFi WPA2 PSK

Dans Android 1.5 (également sur 1.6)

Comment ajouter un point d'accès à partir du code?

Point d'accès qui supporte WPA2. Voici mon extrait de code.

WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiConfiguration wc = new WifiConfiguration(); // This is must be quoted according to the documentation // http://developer.android.com/reference/android/net/wifi/WifiConfiguration.html#SSID wc.SSID = "\"SSIDName\""; wc.preSharedKey = "password"; wc.hiddenSSID = true; wc.status = WifiConfiguration.Status.ENABLED; wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN); int res = wifi.addNetwork(wc); Log.d("WifiPreference", "add Network returned " + res ); boolean b = wifi.enableNetwork(res, true); Log.d("WifiPreference", "enableNetwork returned " + b ); 

Ce code échoue, comme dans LogCat, apparaissent

01-26 16: 44: 13.550: ERROR / wpa_supplicant (2032): ligne 0: mot de passe PSK non valide.

Je suis sûr que c'est le mot de passe et que tous les autres paramètres sont corrects. Que dois-je faire?

  • Comment Wifi et les données mobiles fonctionnent toutes deux simultanément dans Android pour un périphérique OBD2
  • Android se connecte au WiFi sans interaction humaine
  • Comment se connecter à WPA_EAP WIFI sur Android avec l'API 4.3
  • Partagez les informations d'identification Wifi via la balise NFC sans applications spéciales
  • Bibliothèques "Wi-Fi Direct" pour Android?
  • Connexion WiFi Android par programme
  • Android: comment obtenir le nom de Wi-Fi Wi-Fi actuel
  • Connexion WiFi via Android
  • 3 Solutions collect form web for “Comment et quoi configurer sur Android WifiConfiguration.preSharedKey pour vous connecter au réseau WiFi WPA2 PSK”

    La raison de ma peine est ici dans ce problème de documentation

    Bien que la documentation indique ici

    "La clé pré-partagée à utiliser avec WPA-PSK. Lorsque la valeur de cette touche est lue, la clé réelle n'est pas retournée, juste un" * "si la clé a une valeur ou la chaîne nulle autrement."

    C'est correct, mais très important, ce qu'il ne dit pas, c'est attendu ici ether 64 byte hash résultat de la commande linux

     wpa_passphrase <ssid> [passphrase] 

    Ou le mot de passe du point d'accès EN DOUBLE COTE!

    Donc, si le PSK d'Access Point est "exemple", il doit être transmis dans java comme ça

     WifiConfiguration myWiFiConfig = new WifiConfiguration(); ... myWiFiConfig.preSharedKey = "\"example\""; ... 

    OU

     myWiFiConfig.preSharedKey = "0a0b0f62170ecc5bcf721b6ff170b8b560101b5d56b00a26abec217e0bb4aa1f"; 

    Pour tout le reste de vous qui trébucher sur cela, le bon moyen est:

    Copiez-le et collez-le en tant que tel et enregistrez-vous une demi-journée de douleur que nous avons déjà dépensé (remerciements spéciaux à Reflog )

     WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiConfiguration wc = new WifiConfiguration(); wc.SSID = "\"SSIDName\""; wc.preSharedKey = "\"password\""; wc.hiddenSSID = true; wc.status = WifiConfiguration.Status.ENABLED; wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN); int res = wifi.addNetwork(wc); Log.d("WifiPreference", "add Network returned " + res ); boolean b = wifi.enableNetwork(res, true); Log.d("WifiPreference", "enableNetwork returned " + b ); 

    Vous devrez ajouter une ligne inférieure pour:

     wifi.saveConfiguration(); 

    Merci, tout ce que je peux utiliser votre code conncet à mon wpa psk wifi.

      WifiConfiguration wc = new WifiConfiguration(); // This is must be quoted according to the documentation // http://developer.android.com/reference/android/net/wifi/WifiConfiguration.html#SSID wc.SSID = "\"zpoint\""; wc.preSharedKey = "\"sipisP@ssw0rd!\""; wc.hiddenSSID = true; wc.status = WifiConfiguration.Status.ENABLED; wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN); int res = wifi.addNetwork(wc); Log.d("WifiPreference", "add Network returned " + res ); boolean b = wifi.enableNetwork(res, true); Log.d("WifiPreference", "enableNetwork returned " + b ); 

    Au début, je saisis le mot de passe d'erreur, mais plus tard, je corrige le mot de passe, alors ça marche.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.