Estado de la conexión en Phonegap y Android

Es muy importante tener controlado en todo momento si nuestro dispositivo Android está conectado a internet o no lo está. De esta forma se mantiene informado al usuario que si intenta realizar cualquier operación que necesite acceso a Internet no se va a llevar a cabo correctamente.

Es necesario configurar varios ficheros para poder hacer uso del acceso al estado de la red, Para PhoneGap hay que añadir al fichero “res/config.xml” el plugin de phonegap para el uso del servicio.


     <cordova>
         <access origin="http://127.0.0.1*"/>
         <access origin=".*"/>
         <log level="INFO"/>
         <preference name="useBrowserHistory" value="true" />
         <preference name="exit-on-suspend" value="false" />
         <plugins>
              <plugin name="NetworkStatus" value="org.apache.cordova.NetworkManager"/>
                   .....
                   .....
                   .....
              </plugins>
      </cordova>

A nivel de permisos de Android, hay que activar el siguiente para que tengamos permiso a acceder a ellos.

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

A nivel de programación podemos acceder al estado de nuestra conexión bien en Android o bien usando Phonegap.

En Android:


	public static boolean networkAvailable(Context context) {

		ConnectivityManager connectMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
		if (connectMgr != null) {
			NetworkInfo[] netInfo = connectMgr.getAllNetworkInfo();
			if (netInfo != null) {
				for (NetworkInfo net : netInfo) {
					if (net.getState() == NetworkInfo.State.CONNECTED) {
						return true;
					}
				}
			}
		} else {
			Log.d("NETWORK", "Conexiones no disponibles");
		}
		return false;
	}

Como veis es tan sencillo como recorrer el array de NetworkInfo y ver cual de ellas tiene el estado NetworkInfo.State.CONNECTED. Por otro lado, en PhoneGap es aún más sencillo.


	if(navigator.network.connection.type == Connection.NONE){
		// No tenemos conexión
	}else{
		// Si tenemos conexión
	}

Los valores disponibles en PhoneGap para “navigator.network.connection.type” son:

  • Connection.UNKNOWN
  • Connection.ETHERNET
  • Connection.WIFI
  • Connection.CELL_2G
  • Connection.CELL_3G
  • Connection.CELL_4G
  • Connection.NONE

Espero que haya sido útil.

Actualización, para Phonegap 2.3 está deprecado el uso de  “navigator.network.connection.type“, hay que usar.


	if(navigator.connection.type == Connection.NONE){
		// No tenemos conexión
	}else{
		// Si tenemos conexión
	}

Anuncios

6 comentarios

  1. Estimado,

    Está fantástico el tutorial ya que haz hecho los alcances de lo que se encuentra obsoleto tras la nueva actualización de PhoneGap, pero me queda una duda:

    Aquella línea en qué sección la debemos agregar?

  2. Muchas gracias, si te refieres al JavaScript lo puedes usar en cualquier momento a partir de la ejecución del evento onDeviceReady. El método Java cuando desees

  3. Gracias ctrlapps! Lo probaré proximamente. Saludos ! ricardo.pw

  4. como Puedo con phonegap recuperar la IP de mi movil y de manera offline, es decir dentro de una red LAN sin acceso a internet.?? Gracias de antemano.

    1. buenas, tendrás que crear un plugin para acceder a “NetworkInterface.getNetworkInterfaces()” e iterar sobre sus interfaces. hay un ejemplo en http://simonmacdonald.blogspot.in/2012/08/so-you-wanna-write-phonegap-200-android.html

  5. Disculpa hice exactamente lo que sale ahi y en el activity me tira el error que navigator.connection.type == Connection.NONE no existe. como arreglo esto ?

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: