Android,

Android SDK: ¿Cómo detecto la conexión a Internet?

1
Shares

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:

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

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:

	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;
	}

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 :

		if (!verificaConexion(this)) {
			Toast.makeText(getBaseContext(),
					"Comprueba tu conexión a Internet. Saliendo ... ", Toast.LENGTH_SHORT)
					.show();
			this.finish();
		}

Hacemos todo esto porque si nuestra aplicación necesita conexión y no lo comprobamos ésta lanza una excepción y sale a las bravas, sin despedirse ni nada. Un FAIL en toda regla de programador.
Hasta la próxima !