Detectar Conexión a Internet – Eclipse
Si tu aplicación necesita conectarse a Internet resulta muy útil comprobar si disponemos de dicha conexión. Lo primero que vamos a añadir son los permisos al AndroidManifest.xml para que nuestro usuario disponga de dichos permisos. Sí, en realidad la aplicación se ejecuta en el sistema operativo y actúa como usuario UNIX a nivel de permisos.
Vamos a ver el Manifest:
[sourcecode language=»java»] <uses-permission android:name="android.permission.INTERNET" > </uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" > </uses-permission> [/sourcecode]
Importamos lo necesario:
[sourcecode language=»java»] import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.widget.Toast; import android.content.Context; [/sourcecode]
Necesitamos el acceso a Internet genérico y saber el estado de la red. En nuestra clase Java vamos a poner una función de verificación de la conexión, es muy sencilo:
[sourcecode language=»java»] public static boolean verificaConexion(Context ctx) { boolean bConectado = false; ConnectivityManager connec = (ConnectivityManager) ctx .getSystemService(Context.CONNECTIVITY_SERVICE); // No sólo wifi, también GPRS NetworkInfo[] redes = connec.getAllNetworkInfo(); // este bucle debería no ser tan ñapa for (int i = 0; i < 2; i++) { // ¿Tenemos conexión? ponemos a true if (redes[i].getState() == NetworkInfo.State.CONNECTED) { bConectado = true; } } return bConectado; } [/sourcecode]
Ahora que tenemos el método, vamos a usarlo en la parte que nos interese comprobar el estado de la conexión, típicamente puede ser inmediatamente después del super.onCreate(savedInstanceState); en nuestro onCreate. Si no es TRUE que tengamos conexión, lanzamos un Toast o mensajito por pantalla y salimos de la aplicación :
[sourcecode language=»java»] if (!verificaConexion(this)) { Toast.makeText(getBaseContext(), "Comprueba tu conexión a Internet. Saliendo … ", Toast.LENGTH_SHORT) .show(); this.finish(); } [/sourcecode]