2012-03-25 21 views
13

Ho provato il codice seguente per verificare se il mio cellulare è connesso a una rete wireless e funziona bene quando voglio sapere se il mio cellulare è connesso alla rete, ma non riesce a fornire informazioni sull'accesso ad internet ... qualcosa come "fare il ping" di qualsiasi sito web. In realtà ho seguito molti link ma ancora nessuna risposta, quindi sarò così grato se qualcuno può aiutare.Android - Come verificare l'accesso a Internet, non solo la connettività al wifi?

Grazie in anticipo.

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Toast t = new Toast(getApplicationContext()); 

    if (isInternetOn()) { 
     // INTERNET IS AVAILABLE, DO STUFF.. 
     Toast.makeText(ConnectivityTestActivity.this,"Network is Available", Toast.LENGTH_LONG).show(); 

     } 
    else { 
     // NO INTERNET AVAILABLE, DO STUFF.. 
     Toast.makeText(ConnectivityTestActivity.this,"No Network Available", Toast.LENGTH_LONG).show(); 

     } 
} 

public final boolean isInternetOn() { 


    ConnectivityManager connec = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 
    // ARE WE CONNECTED TO THE NET 
    if (connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED || 
    connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTING || 
    connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING || 
    connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED) { 
    // MESSAGE TO SCREEN FOR TESTING (IF REQ) 
    //Toast.makeText(this, connectionType + ” connected”, Toast.LENGTH_SHORT).show(); 
    return true; 
    } else if (connec.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED || connec.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED ) { 

    return false; 
    } 
    return false; 
    }} 

EDIT:

Segui collegamento sotto contiene una grande risposta per il server Ping google e ottenere il risultato

https://stackoverflow.com/a/16458623/1239911

risposta

8

In realtà ho utilizzato la stessa funzione isInternetOn() ma ho rimosso la condizione di connessione. Doveva controllare lo stato della connessione se connesso o meno e se stava provando a connettersi. Questo non ha funzionato per me, quindi ho rimosso il controllo dello stato della connessione e poi ha funzionato.

Grazie per tutte le risposte.

public final boolean isInternetOn() 
{ 
    ConnectivityManager connec = (ConnectivityManager) 
    getSystemService(Context.CONNECTIVITY_SERVICE); 

    // ARE WE CONNECTED TO THE NET 
    if (connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED || 
     connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED) 
    { 
    // MESSAGE TO SCREEN FOR TESTING (IF REQ) 
    //Toast.makeText(this, connectionType + ” connected”, Toast.LENGTH_SHORT).show(); 
    return true; 
    } 
    else if (connec.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED 
    || connec.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED ) 
    { 
    return false; 
    } 

    return false; 
} 
+3

Solo una nota ... Ho usato il codice di cui sopra da un'altra domanda qui in stackoverflow.com, possiamo usare 'ConnectivityManager.Type_WIFI' o 'ConnectivityManager.Type_Mobile' invece di 0 e 1 nel getNetworkInfo() – Amt87

+1

Perché hai persino bisogno della parte "else if'? Se non siamo collegati significa che siamo disconnessi. Potete per favore farmi sapere se c'è qualche uso di questa parte 'else if'? –

+1

Potrebbe essere COLLEGATO, DISCONNESSO, COLLEGAMENTO, DISCONNESSIONE, SOSPESA e SCONOSCIUTA. Puoi controllare questi stati in developer.android.com o quando fai clic su ctrl + spazio dopo (NetworkInfo.State.) Nel tuo codice. Spero che questo possa essere utile. – Amt87

6

vedere l'esempio:

public static boolean isWifiEnabled() { 
    if (!gWifiManager.isWifiEnabled()) { 

     if (mCanShowWifiToast) { 
      new Thread(mWifiToastControl).start(); 
      G.gHandler.post(mNoWifiRunnable); 
     } 

     return false; 
    } else { 
     int linkspeed = gWifiManager.getConnectionInfo().getLinkSpeed(); 
     if (linkspeed < 5) { 
      if (mCanShowWifiToast) { 
       new Thread(mWifiToastControl).start(); 
       G.gHandler.post(mNoWifiRunnable); 
      } 

      return false; 
     } 
    } 

    return true; 
} 
Problemi correlati