2012-03-25 4 views
13

Ich habe den folgenden Code ausprobiert, um zu überprüfen, ob mein Handy mit einem drahtlosen Netzwerk verbunden ist und es funktioniert gut, wenn ich wissen möchte, ob mein Handy mit dem Netzwerk verbunden ist, aber es gibt keine Informationen über den Internetzugang wie "Pinging" jede Website. Eigentlich bin ich vielen Links gefolgt, aber immer noch keine Antwort, also werde ich so dankbar sein, wenn jemand helfen kann.Android - Wie überprüft man den Internetzugang, nicht nur die Verbindung zum WLAN?

Vielen Dank im Voraus.

@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:

Folgen untenstehenden Link für Ping Google-Server eine große Antwort enthält und

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

Antwort

8

Eigentlich habe ich die gleiche Funktion isInternetOn() aber ich den Verbindungszustand entfernt. Es musste den Status der Verbindung überprüfen, ob sie verbunden ist oder nicht und ob sie eine Verbindung herstellen möchte. Dies funktionierte nicht für mich, also entfernte ich die Überprüfung des Verbindungsstatus und dann funktionierte es.

Vielen Dank für alle Antworten.

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

Nur ein Hinweis ... verwenden ich den obigen Code von einer anderen Frage hier in stackoverflow.com, können wir 'ConnectivityManager.Type_WIFI' oder 'ConnectivityManager.Type_Mobile' anstelle von 0 & 1 in der GetNetworkInfo() verwenden, – Amt87

+1

Warum hast du überhaupt den 'else if' Teil gebraucht? Wenn wir nicht verbunden sind, bedeutet das, dass wir getrennt sind. Kannst du mich bitte wissen lassen, ob dieser "else if" -Teil benutzt wird? –

+1

Es könnte VERBUNDEN, DISKONNECTED, CONNECTING, DISCONNECTING, SUSPENDED und UNBEKANNT sein. Sie können diese Zustände in developer.android.com überprüfen oder wenn Sie in Ihrem Code nach ctrl + space nach (NetworkInfo.State.) Klicken. Ich wünschte, das könnte hilfreich sein. – Amt87

6

finden Sie in der Probe erhalten führen:

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; 
} 
Verwandte Themen