Android: comprueba si la contraseña del wifi es correcta

Planeo hacer una aplicación que comprueba si una determinada red wifi usa una contraseña común. Tengo una lista de contraseñas más comunes, pero la siguiente función:

public boolean connectTo(String psKey){ WifiConfiguration wc = new WifiConfiguration(); wc.SSID = "\"" + dbw.getSsid() + "\""; wc.preSharedKey = "\"" + psKey + "\""; wc.status = WifiConfiguration.Status.ENABLED; wc = configureCapabs(wc, dbw.getCapability()); int res = wifi.addNetwork(wc); Toast.makeText(this, "add Network returned " + res , Toast.LENGTH_SHORT).show(); boolean b = wifi.enableNetwork(res, true); Toast.makeText(this, "enableNetwork returned " + b , Toast.LENGTH_SHORT).show(); if(!b) return false; boolean fin = /*b ? wifi.reassociate() : */wifi.reconnect(); return fin; } 

Devuelve true, incluso si la contraseña es incorrecta. ¿Hay alguna forma de comprobar si la contraseña que intenté iniciar sesión con se aceptó o rechazó?

Está utilizando los métodos de reconnect() / reassociate() de WiFiManager para comprobar el tiempo o no la conexión tuvo éxito, pero el valor booleano que devuelven significa algo más. El valor devuelto sólo le informa sobre el resultado de iniciar una operación determinada. Esto se debe a que la asociación y la conexión a una red WiFi lleva tiempo. Estos métodos sin embargo volverán inmediatamente y no bloquearán. La tarea real de conectar o asociarse con la red se realiza asincrónicamente en segundo plano.

Puede supervisar lo que está sucediendo con la conexión WiFi escuchando un sistema específico de difusión amplia:

 <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> <action android:name="android.net.wifi.STATE_CHANGE"/> 

Usted puede encontrar más información sobre esto AQUÍ – Revise la respuesta de Torsten.

En cuanto a comprobar si la contraseña fue aceptada o rechazada por medio de un valor devuelto, en realidad no sé, sin embargo, puedo pensar en dos 'posibles' estrategias alternativas que podrían net el mismo resultado?

No estoy 100% seguro ya que no lo he hecho antes, sin embargo me pregunto si Pinging el suplicante funcionaría?

http://developer.android.com/reference/android/net/wifi/WifiManager.html#pingSupplicant ()

¿O eso o comprobar si usted tiene una dirección IP ahora?

http://developer.android.com/reference/android/net/wifi/WifiInfo.html

  • ¿Permitir que dos dispositivos se vean en Android usando la interfaz wifi?
  • Cómo obtener mi hotspot wifi ssid en mi sistema android actual
  • Habilitar / deshabilitar wifi mediante scripts bash en Android
  • Desactivación de Samsung "Auto Network Switch" para conexión WiFi
  • Cómo enviar MAC marco de datos de difusión con Android AP
  • ¿Puedo usar WiFi para transferir datos / mensajes entre dos teléfonos Android, no conectados a un enrutador?
  • Hotspot multiplexado en Android
  • Detectar la dirección IP wifi en Android?
  • ¿Hay una manera de forzar una conexión de red sobre 4G, incluso cuando WiFi está habilitado y conectado?
  • Wi-Fi Directo y "normal" Wi-Fi - ¿Diferentes MAC?
  • Obtener SSID cuando WIFI está conectado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.