Cómo y qué establecer en Android WifiConfiguration.preSharedKey para conectarse a la red WPA2 PSK WiFi

En Android 1.5 (también en 1.6)

¿Cómo agregar un punto de acceso desde el código?

Punto de acceso dado que admite WPA2. Aquí está mi fragmento de código.

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

Este código falla como en LogCat aparecen

01-26 16: 44: 13.550: ERROR / wpa_supplicant (2032): Línea 0: contraseña PSK no válida.

Estoy seguro de que esta es la contraseña y que todos los demás parámetros son correctos. ¿Qué debo hacer?

3 Solutions collect form web for “Cómo y qué establecer en Android WifiConfiguration.preSharedKey para conectarse a la red WPA2 PSK WiFi”

La razón de mi tristeza está aquí en este problema de Documentación

Aunque la documentación aquí

"Clave precompartida para usar con WPA-PSK Cuando se lee el valor de esta clave, la clave real no se devuelve, sólo un" * "si la clave tiene un valor o la cadena nula de lo contrario."

Es correcto, pero muy importante lo que no dice es que se espera aquí éter 64 bytes hash resultado del comando linux

 wpa_passphrase <ssid> [passphrase] 

O la contraseña de Access Point EN CITAS DOBLE!

Por lo tanto, en caso de que PSK punto de acceso es "ejemplo" que tiene que ser pasado en java como este

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

O

 myWiFiConfig.preSharedKey = "0a0b0f62170ecc5bcf721b6ff170b8b560101b5d56b00a26abec217e0bb4aa1f"; 

Para todo el resto de ustedes que se tropiecen en esto el camino correcto es:

Copiar y pegar como es y salvar a su medio de un medio día de dolor que ya pasó en él (Gracias especiales a 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 ); 

Usted tendrá que agregar la línea de abajo para:

 wifi.saveConfiguration(); 

Gracias, todo puedo usuario su código conncet a mi 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 ); 

Temprano, introdujo la contraseña de error, pero más tarde la contraseña correcta, entonces funciona.

  • Manteniendo Wifi-Direct activado en dispositivos AOSP
  • ¿Cómo distinguir entre diferentes redes wifi?
  • API de hotspot wifi de Android 2.2
  • ¿Cómo detectar dispositivos móviles cercanos usando el SDK de Android?
  • Cómo obtener la configuración del proxy WiFi en Android
  • Android wifi sniffer: encuentra dispositivos cercanos
  • Android: Simular WiFi en el emulador?
  • Aplicaciones de Android, comunicación con un dispositivo conectado al puerto USB
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.