2010-06-29 13 views
9

Voglio creare un servizio Android, che notifica l'attività principale ogni volta che si disconnette e quando Internet si riconnette di nuovo. Ho la seguente funzione per il controllo della connettività internet :.Servizio Android per verificare la connettività 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; 
    } 

Ma voglio sapere come utilizzarlo in un servizio.

risposta

23

I servizi sono progettati per attività di esecuzione a lungo backgroud. È necessario utilizzare un BroadcastReceiver:

Questo è un metodo di esempio che uso per monitorare lo stato della rete nella mia attività principale:

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); 
     } 
    } 

ricordarsi di chiamare unregisterReceiver quando si verifica l'evento OnDestroy

Spero che questo Aiuto.

+0

Grazie. Questo è quello che stavo cercando. – Adnan

+0

Risposta brillante! Mi piace come hai creato un metodo, e ho aggiunto i callback onNetworkUp e Down – Bhargav

+0

Im usando questo e funziona alla grande ma mi piacerebbe avere questo in una classe o un listener. quindi posso usarlo in più di una attività, ma voglio evitare la ripetizione del codice. Quale sarebbe il modo corretto per farlo? –

Problemi correlati