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.

4 Solutions collect form web for “Android se conecta a WiFi sin interacción humana”

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 …

  • ¿Cómo pueden los usuarios / desarrolladores configurar la configuración de proxy de Android para las versiones 2.x?
  • Wi-Fi Directo y "normal" Wi-Fi - ¿Diferentes MAC?
  • Chat wifi entre dos o más dispositivos Android
  • Android 6.0 No se puede agregar WifiConfiguration si ya hay otra WifiConfiguration para ese SSID
  • Android - No puede eliminar la red Wifi de forma programática El método removeNetwork (int) en el tipo WifiManager no es aplicable a los argumentos (String)
  • Obtener la dirección MAC del dispositivo: cuando el wifi está desactivado
  • Android verificar el estado WIFI (desconectado o el usuario ha cambiado WIFI) ¿Cómo FLAG?
  • Cómo escribir un Android SocketServer para escuchar en wifi
  • Android :: ¿Cómo desconectarse de una red wifi?
  • Notificación de muestra de Android de BroadcastReceiver
  • Obtener la dirección de difusión wifi en Android wifi hotspot
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.