Tip Android #01: verificar la conexión a la red de datos y su tipo

16/01/2013
android tip

Siempre que en una app necesitemos conectividad, es una buena práctica comprobar que la tenemos disponible antes de solicitar cualquier operación y esperar a recibir un timeout o error similar. Para ello hay que hacer uso de ConnectivityManager y NetworkInfo , yo siempre utilizo el siguiente snippet:

  private boolean isNetworkConnected(Context context) {

    ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context
        .CONNECTIVITY_SERVICE);
    NetworkInfo info = connectivityManager.getActiveNetworkInfo();
    if (info == null || !info.isConnected() || !info.isAvailable()) {
      return false;
    }
    return true;
  }

Para que este código funcione, es necesario un permiso especial para acceder al estado de la red, con el permiso para usar la conexión a Internet(«android.permission.INTERNET») no es suficiente:

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

El código anterior es muy básico, y si fuera necesario se puede obtener más información sobre la conexión activa a través del método getType() y saber el tipo de conexión usando algunas de las constantes definidas en ConnectivityManager:

info.getType()–>ConnectivityManager.TYPE_MOBILE, ConnectivityManager.TYPE_WIFI, ConnectivityManager.TYPE_WIMAX…

Si hacemos un uso intensivo de datos, quizás sea necesario dar al usuario la posibilidad de configurar la aplicación para que sólo utilice la conexión a Internet via WIFI, o avisarle de esta situación debido al coste económico que podría suponer. Asimismo, en el caso de que la conexión sea de tipo móvil también podemos averiguar exactamente su tipo con las constantes definidas en TelephonyManager:

info.getSubtype()->TelephonyManager.NETWORK_TYPE_UMTS, TelephonyManager.NETWORK_TYPE_LTE, TelephonyManager.NETWORK_TYPE_GPRS…

<< TIPS ANDROID

9 comentarios sobre “Tip Android #01: verificar la conexión a la red de datos y su tipo

  1. Hola, muy bueno el código y sencillo, pero sólo nos dice que esta conectado a una red wifi no que tenga internet o no.

  2. Amigo, intente solo colocar el codigo sin hacer llamada a el, Solo para luego colocar un Boton y ver como llamo a este codigo, , importe las dos librerias, pero me muestra un mensaje en el siguiente mensaje

    Cant not resolve ‘Context’

    Soy nuevo en todo lo que es Java y Android Studio, en realidad quiero hacer una pequeña APP para las Tablet en una Escuela, que haga esto:
    1.- Chequear que esta conectada a una Wifi (Cada 10 Minutos entre 07:00 am y 2:00pm)
    2.- Comparar el nombre de la Wifi con una lista (Tomada de un File o simplemente colocarlar fijas (‘WF-Grado1’ , ‘WF-Grado2’ , etc)
    3.- Si esta conectada y es una de las Wifis en la lista:
    3.1 Enviar a un server una lista de las APP instaladas
    3.2 Enviar a un server una lista de las APP Corriendo en ese momento

    Creo que no es muy complejo, se que la APP necesita permisos, pero es lo de menos, es solo para generar estadisticas de USO.

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.