2010-05-07 12 views

Respuesta

53

En primer lugar, necesita permiso para saber si el dispositivo está conectado a la red o no. Esto tiene que estar en su manifiesto, en el elemento <manifest>:

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

Después, usted necesita para obtener una referencia a la ConnectivityManager:

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

Desde allí se necesita para obtener un objeto NetworkInfo. Para la mayoría, esto significará utilizando ConnectivityManager. getActiveNetworkInfo():

NetworkInfo ni = cm.getActiveNetworkInfo(); 
if (ni == null) { 
    // There are no active networks. 
    return false; 
} 

A partir de ahí, sólo tiene que utilizar uno de los métodos de NetworkInfo para determinar si el dispositivo está conectado a internet:

boolean isConnected = ni.isConnected(); 
+3

recibo una excepción de puntero nulo en este comunicado: boolean isConnected = ni.isConnected(); ¿Por qué? –

+0

Sí ... ¡yo también! – xpepermint

+3

@Maxood, significa que no hay redes activas. En otras palabras, el dispositivo no está conectado a la web. Cambiaré el código. –

6

En primer lugar, es necesario permiso para saber si el dispositivo está conectado a la web o no. Esto tiene que estar en su manifiesto, en el elemento:

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

continuación

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

if (connec != null && (
    (connec.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) || 
    (connec.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED))) { 

     //You are connected, do something online. 

} else if (connec != null && (
    (connec.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.DISCONNECTED) || 
    (connec.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.DISCONNECTED))) {    

     //Not connected.  
     Toast.makeText(getApplicationContext(), "You must be connected to the internet", Toast.LENGTH_LONG).show(); 

} 
4

Añadir este permiso en su archivo AppManifest.xml:

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

El método para comprobar si la red está disponible o no:

boolean isNetworkAvailable() { 
    ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); 

    NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); 
    boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting(); 
    return isConnected; 
} 

Source

Cuestiones relacionadas