2012-04-17 15 views
7

Mi aplicación al principio carga los datos desde Internet (estoy usando el servicio web) Quiero verificar el acceso a internet al inicio de la aplicación.¿Cómo comprobar si internet está disponible o no en el inicio de la aplicación en android?

  1. Me gustaría comprobar si hay alguna forma de conexión a Internet 3G o WIFI o GPRS o cualquier otra disponible o no.
  2. Si no está disponible, envíe un mensaje al usuario como "Necesita acceso a Internet" y salga de la aplicación. (Actualmente recibo un error de cierre forzado en mi aplicación si no hay acceso a Internet)
  3. Si está disponible, inicie mi aplicación normalmente.
  4. Además, mi aplicación recupera los datos del servicio web en una fase diferente, antes de cada fase u operación, me gustaría verificar el acceso a Internet al principio.

¿Cómo hago esto?

+2

Véase, por ejemplo http://stackoverflow.com/questions/1560788/how-to-check-internet-access-on-android-inetaddress-never-timeouts para respuestas anteriores. – mlc

Respuesta

7

Puede usar mi método:

public static boolean isNetworkAvailable(Context context) 
{ 
    ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 

    if (connectivity != null) 
    { 
     NetworkInfo[] info = connectivity.getAllNetworkInfo(); 

     if (info != null) 
     { 
      for (int i = 0; i < info.length; i++) 
      { 
       Log.i("Class", info[i].getState().toString()); 
       if (info[i].getState() == NetworkInfo.State.CONNECTED) 
       { 
        return true; 
       } 
      } 
     } 
    } 
    return false; 
} 
+0

Gracias! funciona !!! – captaindroid

+0

me alegra que te ayude :) :) – dreamcoder

+0

si tengo wifi conectado sin conexión a Internet, entonces el código es verdadero. tienes alguna alternativa para esto? –

3

Puede hacer todo esto usando ConnectivityManager. Toda la información necesaria está disponible aquí

http://developer.android.com/reference/android/net/ConnectivityManager.html

Probablemente quiere meter algo como esto en el método de su actividad inicial onStart() (dependiendo de en qué parte de su código de la conexión se encendió y se descargan los datos)

ConnectivityManager cm = (ConnectivityManager) Context.getSystemService(Context.CONNECTIVITY_SERVICE); 

if (cm.getAllNetworkInfo().isConnected()) { 
//proceed with loading 
} else { 
//showErrorDialog 
} 

código te no he probado hasta cortar y pegar es probablemente una mala idea, pero esto debe darle un buen punto de partida. Hay mucha otra información si revisas los documentos.

También podría ser una buena idea manejar la falta de conectividad cambiando su código para que no se cuelgue si no hay conexión, ¿hay alguna pantalla de carga predeterminada? Además, su aplicación puede no obtener datos, incluso si hay una conexión disponible, por lo que querrá manejar ese escenario también.

1
NetworkInfo i = conMgr.getActiveNetworkInfo(); 
    if (i == null) 
    return false; 
    if (!i.isConnected()) 
    return false; 
    if (!i.isAvailable()) 
    return false; 
    return true; 
Cuestiones relacionadas