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.

  • Android: Escaneado de redes Wifi + Lista seleccionable
  • ¿Puedo obtener la dirección IP del punto de acceso a Estoy conectado a través de wifi?
  • Crear configuración de punto de acceso Wifi en android
  • Android Ethernet y Wi-Fi al mismo tiempo
  • ¿Cómo averiguar otro usuario conectado a la misma red WIFI con la que está en android?
  • Cómo enviar MAC marco de datos de difusión con Android AP
  • Android Compruebe si hay WiFi pero no Internet
  • Construir una configuración Wifi desde un ScanResult o: Interpretar la cadena 'capabilities' de ScanResult
  • Android: Detener / Iniciar servicio dependiendo del estado WiFi?
  • Android wifiManager.addNetwork devuelve -1
  • Connectify detiene la conexión a Internet después de algún tiempo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.