Android se conecta a WiFi sin interacción humana

Me pregunto si hay algunos fragmentos de código que se pueden utilizar para conectar un dispositivo Android a una red WiFi. La red debe estar abierta o WEP / WPA encriptada y visible para ese dispositivo. Normalmente, utilizamos la interfaz GUI para ingresar contraseñas WiFi y pulsamos el botón de conexión. Quiero almacenar la contraseña en un lugar, y utilizar la contraseña para conectarse a la red sin problemas sin interacción humana. ¿Es eso posible? Muchas gracias.

Gracias chicos. Con su ayuda, ahora puedo conectarme a una red encriptada WPA / PSK sin dolor. Aquí está mi fragmento de código:

WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); // setup a wifi configuration WifiConfiguration wc = new WifiConfiguration(); wc.SSID = "\"YOUR_SSID\""; wc.preSharedKey = "\"YOUR_PASSWORD\""; 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); // connect to and enable the connection int netId = wifiManager.addNetwork(wc); wifiManager.enableNetwork(netId, true); wifiManager.setWifiEnabled(true); 

Los trucos son:

  • SSID cadena debe estar rodeada de ", que se denotan por \"
  • AddNetwork () DISABLES la red agregada de forma predeterminada, por lo que debe habilitarla con el método enableNetwork ().

Para hacer el código de ejemplo OPs, tuve que añadir una línea más:

 wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA); 

Sin esa línea simplemente no se conectará a la red. La configuración se acepta y se agrega, pero no se realizan intentos de conexión. En realidad recibí el siguiente mensaje en la ventana logcat:

 Event [WPA: Failed to select WPA/RSN] android 

Que me llevó a la solución final, averiguar por qué no funcionó para mí.

WifiManager – Has intentado buscar aquí. El método addNetwork () parece que puede hacer lo que quiere que haga. Todo lo que tienes que hacer es poner la información en una clase WifiConfiguration y luego agregar la red, luego habilitar esa conexión. La Documentación está allí.

Consulte la documentación de "WifiManager"

Se puede utilizar para habilitar wifi:

 WifiManager wifiManager = (WifiManager)this.context.getSystemService(Context.WIFI_SERVICE); wifiManager.setWifiEnabled(true); 

Y se puede utilizar para hacer muchas otras cosas.

Editar: No olvide actualizar sus permisos al monitorear y cambiar el estado wifi, por ejemplo:

 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 

Etc …

  • Flujo de Android Wifi
  • ¿Podemos conectar más de 10 dispositivos con wi-fi hot-spot en Android
  • No se puede conectar a Android a través de ADB a través de wifi - ¿Necesito acceso root?
  • Chat wifi entre dos o más dispositivos Android
  • hostapd & rpbi portal cautivo
  • Cómo obtener el IP del hotspot wifi en Android?
  • Obtener la intensidad de la señal de WIFI y datos móviles
  • Compartir ajustes WiFi como QR-Code para WPA2 Enterprise
  • Velocidad de análisis WiFi más rápida para obtener cambios rssi android
  • No se puede acceder a Internet a través de WiFi desde un servicio de fondo
  • Cómo obtener la dirección MAC en Android 6.0
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.