android

Comprobar si hay conexión a Internet en Android

En Android, Programación por trellat9 Comentarios

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.

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 function 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();
}

Comentarios

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

    1. 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.

      1. muy buen metodo, de todos los que probe el mejor.
        Yo este metodo lo estoy probando en el onclick asi compruebo cuando hay una conexion a internet, pero lo puedo hacer, para que siempre este comprobando si hay una conexion a internet (ejemplo whatsApp) si me puedieras ayudar seria genial

  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