Conectarse a WiFi abierto

Utilizo el código de abajo para conectarse a redes cifradas. Sin embargo, si una red no está segura y dejo la clave vacía (""), entonces falla. ¿Alguien tiene una idea de cómo resolver esto? Además, ¿es posible detectar si una red está abierta utilizando el ssid / bssid? ¿O tengo que escanear con un filtro?

public void connectToSSID(final String ssid, final String key) { Log.i("wifimaster", "connection to "+ssid); WifiConfiguration wc = new WifiConfiguration(); wc.SSID = "\""+ssid+"\""; //IMPORTANT! This should be in Quotes!! wc.priority = 40; wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN); wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA); wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED); wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104); wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_EAP); wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); wc.preSharedKey = "\""+key+"\""; wc.wepKeys[0] = "\""+key+"\""; //This is the WEP Password wc.wepTxKeyIndex = 0; wc.preSharedKey = "\""+key+"\""; int res = wifiManager.addNetwork(wc); Log.d("WifiPreference", "add Network returned " + res ); boolean es = wifiManager.saveConfiguration(); Log.d("WifiPreference", "saveConfiguration returned " + es ); boolean b = wifiManager.enableNetwork(res, true); Log.d("WifiPreference", "enableNetwork returned " + b ); if(b) Toast.makeText(c, c.getString(R.string.connected), Toast.LENGTH_SHORT).show(); else Toast.makeText(c, c.getString(R.string.unconnected), Toast.LENGTH_SHORT).show(); } 

Utilizar

 wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); 

Sólo y funcionará.

Eliminar todas las demás asignaciones a wc , no es necesario utilizarlos para una simple tarea de conexión a una red. No está creating una red, se está conectando a una existing .

Para una solución completa, vea este enlace: ¿Cómo me conecto a una red Wi-Fi específica en Android mediante programación? Tiene todo lo que necesita saber.

  • BroadcastReceiver recibe varios mensajes idénticos para un evento
  • ¿Cómo me conecto a una red Wi-Fi específica en Android mediante programación?
  • ¿Cómo puedo imprimir a través de una impresora WiFi en Android mediante una conexión Wi-Fi Direct?
  • No se puede acceder a Internet a través de WiFi desde un servicio de fondo
  • Android - detección si wifi es WEP, WPA, WPA2, etc. programáticamente
  • API de hotspot wifi de Android 2.2
  • Android 4.0 - comprobar la conexión a WiFi
  • ¿Cómo conectar wifi android a adhoc wifi?
  • Comprobación de Wi-Fi activado o no en Android
  • Inicie el navegador predeterminado desde el navegador de portal cautivo de Android (CaptivePortalLogin)
  • Cómo deshabilitar la conexión automática WIFI en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.