Cómo determinar mediante programación si android está conectado a wifi?

Estoy tratando de configurar una prueba de automatización en una nueva aplicación para Android que estoy desarrollando, pero tener un poco de problemas con uno de los apis

El problema que estoy enfrentando es que quiero iniciar la prueba después de wifi tiene una conexión, no cuando está en el estado de conexión. He intentado dos soluciones pero no tuve suerte y la prueba parece comenzar antes de que mi dispositivo androide esté totalmente conectado (no x en las barras wifi)

wifiManager.setWifiEnabled(state); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); while (wifiInfo.getSSID() == null) { Log.i("WifiStatus", "Here I am"); Thread.sleep(Time.ONE_SECOND); wifiInfo = wifiManager.getConnectionInfo(); 

Esta es mi primera implementación tratando de obtener el SSID para determinar si se ha establecido la conexión. pero la prueba todavía comienza antes de que se haya realizado una conexión completa y falla la configuración.

 ConnectivityManager connManager = (ConnectivityManager) con.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); wifiManager.setWifiEnabled(state); while (!networkInfo.isConnected()) { Log.i("WifiStatus", "Here I am"); Thread.sleep(Time.ONE_SECOND); networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); } 

La segunda implementación que estoy utilizando el administrador de conectividad en su lugar y utilizando isConnected() .

¿Alguien tiene otro método que posiblemente puede comprobar para determinar si el dispositivo ha establecido plenamente una conexión con wifi?

Envíe un "ping" si quiere llamarlo así. Si la conexión se completa, usted sabe que todavía está conectado. Si obtiene una IOException o una IOException NullPointerException , es probable que se haya agotado el tiempo y no estén conectados.

 try { URL url = new URL("http://www.google.com"); HttpURLConnection urlConnect = (HttpURLConnection) url.openConnection(); urlConnect.setConnectTimeout(1000); urlConnect.getContent(); System.out.println("Connection established."); } catch (NullPointerException np) { np.printStackTrace(); } catch (IOException io) { io.printStackTrace(); } 

En lugar de obtener el networkinfo manualmente … intente obtener la red "actualmente activa" y comprobar si es el wifi. Nota: Si es nulo significa que no hay red conectada … por lo que reemplaza la llamada isConnected.

 ConnectivityManager connManager = (ConnectivityManager) con.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo current = connManager.getActiveNetworkInfo(); boolean isWifi = current != null && current.getType() == ConnectivityManager.TYPE_WIFI; 
  • Determine el ancho de banda de conexión de red (velocidad) wifi y datos móviles
  • Android Lollipop - Hotspot WiFi setWifiApEnabled () obtener InvocationTargetException
  • ¿Puedo usar WiFi para transferir datos / mensajes entre dos teléfonos Android, no conectados a un enrutador?
  • ¿Cómo me conecto a una red Wi-Fi específica en Android mediante programación?
  • Obtener el protocolo Wi-Fi (802.11a / b / g / n) mediante programación
  • Android Personalizar la exploración Wifi
  • Android Wi-Fi Direct leer la intensidad de la señal rssi
  • Escanear Wi-Fi de Android: Filtrar impresoras de ScanResult
  • Cómo obtener la fuerza de la señal de WiFi WiFi conectado?
  • Cómo obtener la dirección IP del router wifi conectado en android mediante programación?
  • Cómo conectarse a un elemento Wifi ScanResult
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.