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 para comprobar Internet, si el dispositivo está conectado. 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.
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.
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
tendrias que crear un hilo que se ejecutara cada tantos segundos
y cual mismo es aun lo lo han cambiado «compruebaConexion «
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.
Cierto! Ya lo he corregido.
Muchas gracias por decírmelo 🙂
gracias amigo. Me ayudo mucho
Gracias a tí kelvin! Me alegro que te haya sido de ayuda 🙂
como se llama a esta funcion??
Gracias, funciono de maravilla, justo lo que necesitaba.