Este código siempre devuelve verdadero. Se llama cuando se presiona un botón de inicio de sesión. Primero probé con wifi conectado (en emulador). Volvió verdadero y luego desconecté el wifi y luego lo intenté. todavía vuelve verdadero.La información de red de Android siempre devuelve verdadero incluso si Internet no está disponible
public static boolean isNetworkAvailable(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
// if no network is available networkInfo will be null
// otherwise check if we are connected
if (networkInfo != null && networkInfo.isConnected()) {
State network = networkInfo.getState();
Log.d("here", "true");
return (network == NetworkInfo.State.CONNECTED || network == NetworkInfo.State.CONNECTING);
}
Log.d("here1", "false");
return false;
}
Entonces, ¿no hay una manera directa de saber si Internet está disponible o no? –
No hay. El problema es que la "red" es una cuestión de definición aquí. Puede conectarse a wifi, con acceso completo a una intranet, y eso podría estar bien para su aplicación. También puede sentarse detrás de un firewall muy restrictivo, bloqueando, por ejemplo, www.facebook.com para mantener la productividad de los empleados. Deberá realizar una comprobación explícita del servicio que le interesa o una URL común. My ConnectivityService no es ciencia de cohetes, y lo limpiaré y lo publicaré aquí cuando disponga de un poco de tiempo, probablemente no antes del lunes. – 323go
excelente respuesta discúlpeme si cito su respuesta cuando corresponda porque me volvía loco +1 – shareef