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
- Cree un punto de acceso con el Nexus 7
- ¿Cómo iniciar una conexión de red local programmically a través de hotspot Wi-Fi en Android?
- Android wifiManager.addNetwork devuelve -1
- Forzar Android a usar 3G cuando en el área local wifi sin acceso a la red
- Android - Get Notified cuando se detecta un nuevo punto de acceso?
- Conéctese a una red wifi protegida con contraseña usando el shell de adb
- ¿Cómo obtener una notificación cuando un dispositivo se conecta a su android wifi tethering AP?
- Android Personalizar la exploración Wifi
- Obtener SSID cuando WIFI está conectado
- Detenga la conexión de Android a ciertas redes wifi
- Cómo y qué establecer en Android WifiConfiguration.preSharedKey para conectarse a la red WPA2 PSK WiFi
- Cómo ejecutar wifi peer to peer aplicación en el emulador de Android ..?
- Cómo obtener la dirección MAC de Android Wi-Fi Hotspot / tethering / AP
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 } }
- Cómo evitar las intenciones pendientes en caché?
- Enviar correo electrónico en servicio (sin preguntar al usuario)