2011-05-19 14 views
6

¿Hay algún evento que me indique que el dispositivo se ha conectado a INTERNET (3G o wifi)? Necesito comenzar alguna solicitud solo después de que el dispositivo se conecte a INTERNET. El código debe ser compatible con Android 2.1. Graciasandroid connect to internet event

Respuesta

6

Puede utilizar un receptor de radiodifusión y esperar a que la acción ConnectivityManager.CONNECTIVITY_ACTION

Aquí el doc

Ex:

broadcastReceiver = new BroadcastReceiver() { 

       @Override 
       public void onReceive(Context context, Intent intent) { 

        ConnectivityManager connectivity = (ConnectivityManager) context 
          .getSystemService(Context.CONNECTIVITY_SERVICE); 


         NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
         //Play with the info about current network state 


        } 

       } 
      }; 

      intentFilter = new IntentFilter(); 
      intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); 
      registerReceiver(broadcastReceiver, intentFilter); 
+0

Esto es lo que estaba buscando. Gracias. –

+0

es correcto ver este enlace http://stackoverflow.com/questions/3767591/check-intent-internet-connection – Andy

0
public static boolean checkInternetConnection(Context context) { 

    final ConnectivityManager mConnectivityManager = (ConnectivityManager) context 
      .getSystemService(Context.CONNECTIVITY_SERVICE); 

    final NetworkInfo netInfo = mConnectivityManager.getActiveNetworkInfo(); 
    if (netInfo != null && netInfo.isConnectedOrConnecting()) { 
     return true; 
    } else 
     return false; 
} 

Con esta función, la función devolverá verdadero si está conectado a Internet y false

+0

sé cómo comprobar si el dispositivo está conectado a Internet, pero necesito saber cuando el dispositivo se conecta a Internet sin hacer comprobaciones repetidas –

1
public static boolean connectionCheck(final Context context) 
{ 
    boolean returnTemp=true; 
    ConnectivityManager conManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo i = conManager.getActiveNetworkInfo(); 
    if ((i == null)||(!i.isConnected())||(!i.isAvailable())) 
    { 
     AlertDialog.Builder dialog = new Builder(context); 
     dialog.setTitle("CONNECTION STATUS"); 
     dialog.setMessage("Failed"); 
     dialog.setCancelable(false); 
     dialog.setPositiveButton("Ok",new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
       WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE); 
     wifiManager.setWifiEnabled(true); 
     Toast.makeText(TennisAppActivity.mContext,"Wi-Fi On", Toast.LENGTH_LONG).show(); 
      } 
     }); 
     dialog.show(); 
     return false; 
    } 
    return true;`enter code here` 
} 

utilizar esta función es capaz de saber dispositivo ha conectado a Internet del no. Espero que esta sea una ayuda completa para usted.

+0

por favor ver mi comentario anterior :( –

2

utilizar un receptor de difusión, que se llamará siempre que cambie el estado de la red:

private NetworkStateReceiver mNetSateReceiver = null; 

private class NetworkStateReceiver extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     // Check the network state to determine whether 
     // we're connected or disconnected 
    } 
} 

@Override 
public void onCreate() 
{ 
    registerReceiver(mNetSateReceiver, new IntentFilter(
     ConnectivityManager.CONNECTIVITY_ACTION)); 
} 

@Override 
public void onDestroy() 
{ 
    save(); 
    unregisterReceiver(mNetSateReceiver); 
} 

Se llamará a onReceive cada vez que cambie el estado de la red, y puede usar las técnicas detalladas en la otra respuesta para determinar si realmente está conectado o no.