Internetverbindung im Android Emulator zeigt immer verbundenen Zustand

? ganesh @ | Original: StackOverFlow
---

Hallo Ich habe versucht, in vielerlei Hinsicht zu Internet-Anschluss in meinem Android- Emulator prüfen

  ConnectivityManager conMgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);  

   NetworkInfo info= conMgr.getActiveNetworkInfo();  

         if(info != null || info.isConnected()) {  
              Log.v("NetworkInfo","Connected State");  
         }  
        else{  
            Log.v("NetworkInfo","Not Connected state");  
            Log.v("Reason",info.getReason());  
        } 

auch wenn ich deaktivieren Internet-Verbindung in meinem System scheint mein Code zum Status Verbunden angezeigt so vermutete ich das kann funktionieren

 if ( conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED
        ||  conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED  ) {

      Log.v("Congr","Connection Present");

    }
    else if ( conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED
        ||  conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED) {

      Log.v("conMgr"," No Connection");

    } 

aber der obige Code zeigt auch "Verbindungs ​​Gegenwart" auch wenn ich trennen Internetkabel . .Bitte Helfen, eine richtige Art und Weise, diese zu tun .Ich finde haben ACCESS_NETWORK_STATE und INTERNET Erlaubnis in meinem Manifest-Datei

---

Top 5 Antwort

1breakingart.com @

1 Trennen Internet-Kabel, ist irrelevant. Verwenden Sie F8, um Aus- / Einschalten Internet im Emulator

2 In der ersten Code diese Logik ist falsch :

if(info != null || info.isConnected()) {  
              Log.v("NetworkInfo","Connected State");  
         } 

It should be:

if(info != null && info.isConnected()) {  
              Log.v("NetworkInfo","Connected State");  
         } 

Wenn Sie || dann ist das Ergebnis : a) wenn info null ist, wird info.isConnected () Absturz b) wenn Informationen nicht null ist, werden Sie immer zeigen verbundenen Zustand

Doch selbst wenn Sie zu beheben, dass der Code wird nicht vollständig entsprechen (siehe 4)

3 In der zweiten Code, ist diese Logik falsch :

 else if ( conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED
        ||  conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED) {

      Log.v("conMgr"," No Connection");

    } 

should be:

 else {

      Log.v("conMgr"," No Connection");

    } 

Warum Den? Weil es mehr Staaten als verbunden und getrennt .

Doch selbst wenn Sie zu beheben, dass der Code wird nicht vollständig entsprechen (siehe 4)

4 Dies funktioniert auf Emulator und Geräte.

connected = (   conMgr.getActiveNetworkInfo() != null &&
            conMgr.getActiveNetworkInfo().isAvailable() &&
            conMgr.getActiveNetworkInfo().isConnected()   )

Beachten Sie die Verwendung isAvailable - ohne diese isConnected kann TRUE zurück, wenn WLAN deaktiviert ist.

Hoffe das hilft!

2user1023110 @

Eigentlich bedeutet das nicht sagen, ob der Emulator auf die Bahn über den Host-PC verbunden . Wenn Sie es auf einem PC und WLAN- des PC ausgeschaltet ist es immer noch true zurück, solange der Emulator findet seinen im Online- Zustand . Der einzige Weg, ich habe in der Lage, Online sicher festzustellen, ob der Emulator ist wirklich ist, zu versuchen, eine Seite zu holen und sehen, ob es gelingt oder nicht.