Android 4.0 – comprobar la conexión a WiFi

Utilizo la función abajo para comprobar la conexión al punto del hotspot de WiFi:

public boolean IsWiFiConnected(){ List<WifiConfiguration> wifiConfigList = wifiManager.getConfiguredNetworks(); boolean retVal=false; for(WifiConfiguration wifiConf : wifiConfigList){ if(wifiConf.status==WifiConfiguration.Status.CURRENT){ retVal=true; break; } } return retVal; } 

En android 4.0 siempre devuelve false. Funciona muy bien en las versiones anteriores. Gracias

Hay un método más rápido y más confiable que el tuyo.

 public boolean IsWiFiConnected() { ConnectivityManager manager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); NetworkInfo netInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); return netInfo.isConnected(); } 

Sólo para ampliar la respuesta de gabriel, ya que puede valer la pena comprobar que el usuario tiene alguna conexión de datos, es decir, WiFi o datos. Esto también mostrará un cuadro de diálogo preguntando al usuario si desea activar WiFi mediante un intento. ¡Espero que esto te ayude!

  private boolean haveNetworkConnection() { boolean haveConnectedWifi = false; boolean haveConnectedMobile = false; ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo[] netInfo = cm.getAllNetworkInfo(); for (NetworkInfo ni : netInfo) { if (ni.getTypeName().equalsIgnoreCase("WIFI")) if (ni.isConnected()) haveConnectedWifi = true; if (ni.getTypeName().equalsIgnoreCase("MOBILE")) if (ni.isConnected()) haveConnectedMobile = true; } if (haveConnectedWifi == false && haveConnectedMobile == false) { Log.d("Network State", "false"); AlertDialog.Builder alert = new AlertDialog.Builder(YourActivity.this); alert.setTitle("No Data Connection!"); alert.setMessage("You have no data connection."); alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { // TODO Auto-generated method stub final Intent intent = new Intent(Intent.ACTION_MAIN, null); intent.addCategory(Intent.CATEGORY_LAUNCHER); final ComponentName cn = new ComponentName("com.android.settings", "com.android.settings.wifi.WifiSettings"); intent.setComponent(cn); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity( intent); } }); alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub return; } }); alert.show(); }else{ //do something else } return haveConnectedWifi || haveConnectedMobile; } 

comprobar el estado del wifi:

 ConnectivityManager conMgr; NetworkInfo netInfo; WifiManager wifiMgr; conMgr=(ConnectivityManager)getSystemService(context.WIFI_Service); netInfo=conMgr.getActiveNetworkInfo(); if(!(netInfo==null)) { if(WifiMgr.isWifiEnabled()) { //wifi enabled } else { //wifi disabled ie not available } } 
  • ¿Puedo cambiar el propietario del grupo en un grupo persistente en Wi-Fi Direct?
  • Aplicación de Android Dispositivo Wi-Fi - Conectividad AP
  • Espere hasta que se complete la tarea
  • ¿Cómo puedo transferir archivos entre dispositivos Android mediante Wi-Fi Direct?
  • ¿Cómo pueden los usuarios / desarrolladores configurar la configuración de proxy de Android para las versiones 2.x?
  • Conéctese a wifi sin Internet mediante programación
  • ¿Cómo puedo comprobar mi dispositivo Android de apoyo wifi directo?
  • Cómo evitar el retraso en los mensajes de GCM de Android / cambio de latidos del corazón
  • ¿Cómo puedo llamar a la pantalla de configuración Wi-Fi de mi aplicación mediante Android
  • ¿Pueden funcionar wifi y 3G al mismo tiempo en Android?
  • Soporte de multidifusión en Android en modo Hotspot / Tethering
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.