Comprobar si hay conexión a Internet en Android

Comprobar si hay conexión a Internet en Android
4 (80%) 1 vote

Si se está programando una aplicación para Android que necesite conectarse a Internet, es interesante antes de hacerlo, comprobar si hay conexión a Internet. Así se puede evitar errores que haciendo esta comprobación previa, son fáciles de controlar y advertir al usuario, o bien, ejecutar un código alternativo.

Para realizar la comprobación, lo primero es dar permisos a la aplicación para hacerlo. Para ello, basta con añadir al manifiesto (AndroidManifest.xml) de la aplicación los siguientes permisos:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

El primero de ellos es el permiso para acceder a Internet, que si la aplicación ya accede a Internet, lo más probable es que ya se haya añadido con anterioridad. El segundo es el que permite consultar el estado de la red, que es el fin de este tutorial.

Función para comprobar la conexión a Internet

Para hacerlo más sencillo, la comprobación se puede meter en una función como la siguiente:

/**
 * Función para comprobar si hay conexión a Internet
 * @param context
 * @return boolean
 */

public static boolean compruebaConexion(Context context) {

   boolean connected = false;

   ConnectivityManager connec = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

    // Recupera todas las redes (tanto móviles como wifi)
    NetworkInfo[] redes = connec.getAllNetworkInfo();

    for (int i = 0; i < redes.length; i++) {
        // Si alguna red tiene conexión, se devuelve true
        if (redes[i].getState() == NetworkInfo.State.CONNECTED) {
            connected = true;
        }
    }
    return connected;
}

Llamando a esta función ya se obtiene si hay alguna conexión activa, tanto de la red móvil como de Wifi. En caso afirmativo, devolverá true y en caso de que no se tenga conexión a Internet en ese momento, false.

Un ejemplo de llamada podría ser el siguiente:

if (!compruebaConexion(this)) {
    Toast.makeText(getBaseContext(),"Necesaria conexión a internet ", Toast.LENGTH_SHORT).show();
}

En este ejemplo, en caso de no haber conexión mostrará un mensaje Toast para advertirlo.

11 comentarios en “Comprobar si hay conexión a Internet en Android”

  1. hola, consulta el if (!compruebaConexion(this)) {
    Toast.makeText(getBaseContext(),”Necesaria conexión a internet “, Toast.LENGTH_SHORT).show();
    }
    de donde viene el compruebaConexion?

    • Hola Matías,

      Lo siento, había un error, compruebaConexion es la función definida justo arriba, sólo que se nos olvidó cambiarle el nombre 😉

      Gracias por el comentario, ya lo hemos actualizado.
      Espero que te sea de utilidad, cualquier duda ya nos dices.

  2. boolean connected = false;

    ConnectivityManager connec = (ConnectivityManager) “context”…; no “contexto” …

    La variable debería de ser “context” que es lo que se le pasa por parámetro, “contexto” como tal no existe.
    Funciona genial. Gracias.

Deja un comentario

Esta web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está aceptando éstas y nuestra política de las mismas.

ACEPTAR
Aviso de cookies