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

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

  1. me ha funcionado en varios mobiles pero no logro hacer que corra en un cel con android 2.3

  2. bueno la versión que uso es del android sdk 10 y el movil 2.3.4

  3. Antonio dice:

    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.

  4. Pingback: Blog ecerpa.com | Android SDK: ¿Cómo detecto la conexión a Internet?

  5. Jorismos dice:

    donde va ese código??

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: