2012-04-27 17 views
12

Sto facendo un'applicazione che utilizza la connessione Internet attraverso l'applicazione. Se la connessione Internet viene persa durante l'utilizzo dell'applicazione, l'applicazione viene chiusa forzatamente. Per evitare ciò, se internet non è disponibile, voglio mostrare un messaggio di avviso. Come posso fare questo. Al momento dell'accesso sto verificando la connettività utilizzando il codice seguente. Ma come posso farlo per l'intera applicazione in background.Come verificare periodicamente la connessione Internet nell'intera applicazione?

private boolean haveInternet(){ 
     NetworkInfo info = ((ConnectivityManager)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; 
} 

grazie ..

+0

@parag Puoi mostrarmi un esempio? – wolverine

+0

@parag, ok Grazie. – wolverine

+0

Sempre benvenuti per gli amici –

risposta

39

Si dovrebbe fare un BroadcastReceiver che verrà attivato quando lo stato di connettività è cambiato:

 public class BroadCastSampleActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     this.registerReceiver(this.mConnReceiver, 
       new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); 
    } 
    private BroadcastReceiver mConnReceiver = new BroadcastReceiver() { 
     public void onReceive(Context context, Intent intent) { 
      boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false); 
      String reason = intent.getStringExtra(ConnectivityManager.EXTRA_REASON); 
      boolean isFailover = intent.getBooleanExtra(ConnectivityManager.EXTRA_IS_FAILOVER, false); 

      NetworkInfo currentNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO); 
      NetworkInfo otherNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO); 

      if(currentNetworkInfo.isConnected()){ 
       Toast.makeText(getApplicationContext(), "Connected", Toast.LENGTH_LONG).show(); 
      }else{ 
       Toast.makeText(getApplicationContext(), "Not Connected", Toast.LENGTH_LONG).show(); 
      } 
     } 
    }; 
} 

e poi nel vostro AndroidManifest è possibile controllare se si dispone di connettività :

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

Scaricare il codice sorgente - here

+0

ho aggiunto questo codice, ma non ne ho ricevuto tostate i messaggi quando la rete cambia .. – wolverine

+0

Funziona come un incantesimo, questo funziona .. – Darpan

+0

hey avete controllato un altro metodo RegisterReceiver con firma (ricevitore, filtro, Braodcastpermission, gestore)? il mio dubbio è, quale "autorizzazione di trasmissione" userete se doveste usarlo per registrare questo ricevitore? – Darpan

Problemi correlati