2010-06-29 10 views
9

Quiero crear un servicio de Android, que notifique la actividad principal cada vez que se desconecte y cuando se vuelva a conectar Internet. Tengo la siguiente función para verificar la conectividad de internet:Servicio de Android para comprobar la conectividad a Internet?

private boolean haveInternet(){ 
     NetworkInfo info=(NetworkInfo)((ConnectivityManager)this.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); 

     if(info==null || !info.isConnected()){ 
      return false; 
     } 
     if(info.isRoaming()){ 
      //here is the roaming option you can change it if you want to disable internet while roaming, just return false 
      return true; 
     } 
     return true; 
    } 

Pero quiero saber cómo usarlo en un servicio.

Respuesta

23

Los servicios están diseñados para una larga ejecución de tareas en el backgroud. Debe utilizar un BroadcastReceiver:

Este es un método de ejemplo que utilizo para monitorear el estado de la red en mi actividad principal:

private void installListener() { 

     if (broadcastReceiver == null) { 

      broadcastReceiver = new BroadcastReceiver() { 

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

        Bundle extras = intent.getExtras(); 

        NetworkInfo info = (NetworkInfo) extras 
          .getParcelable("networkInfo"); 

        State state = info.getState(); 
        Log.d("InternalBroadcastReceiver", info.toString() + " " 
          + state.toString()); 

        if (state == State.CONNECTED) { 

         onNetworkUp(); 

        } else { 

         onNetworkDown(); 

        } 

       } 
      }; 

      final IntentFilter intentFilter = new IntentFilter(); 
      intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); 
      registerReceiver(broadcastReceiver, intentFilter); 
     } 
    } 

recuerde llamar unregisterReceiver cuando el evento OnDestroy se produce

Esperanza esta ayuda.

+0

Gracias. Esto es lo que estaba buscando. – Adnan

+0

Brillante respuesta! Me encanta cómo creaste un método, y agregué las devoluciones de llamada onNetworkUp y Down – Bhargav

+0

Estoy usando esto y funciona muy bien, pero me gustaría tener esto en una clase o un oyente. entonces puedo usarlo en más de una actividad, pero quiero evitar la repetición del código. ¿Cuál sería la forma correcta de hacerlo? –

Cuestiones relacionadas