Connexion Internet dans émulateur Android affiche toujours état ​​connecté

? ganesh @ | Original: StackOverFlow

salut Je ai essayé de nombreuses façons de vérifier la connexion Internet dans mon émulateur Android

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

même si je désactiver la connexion Internet dans mon système, mon code semble afficher état ​​Connecté donc je devinais que cela peut fonctionner

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

    } 

mais le code ci-dessus affiche également "Connexion " même Présent câbles Internet lorsque je déconnecte . Se il vous plaît l'aide pour trouver une bonne façon de le faire .I ont ACCESS_NETWORK_STATE et la permission INTERNET dans mon fichier manifeste

Top 5 Répondre

1breakingart.com @

1 Déconnexion câbles internet ne est pas pertinent . Utilisez F8 pour éteindre / allumer Internet dans l'émulateur

2 Dans le premier code cette logique est faux:

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

It should be:

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

Si vous utilisez || alors ce est le résultat : a) lorsque les informations est nulle, info.isConnected ( ) va se planter b ) lorsque les informations ne est pas nul, vous aurez toujours montrer Etat Connected

Cependant, même si vous fixez que le code ne sera pas en tout à fait correct (voir 4 )

3 Dans le second code, cette logique est faux :

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

    } 

Pourquoi ? Parce qu'il ya plus que les Etats connecté et déconnecté .

Cependant, même si vous fixez que le code ne sera pas en tout à fait correct (voir 4 )

4 Cela fonctionne sur émulateur et périphériques .

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

Notez l'utilisation de isAvailable - sans cette isConnected peuvent retourner TRUE lorsque WIFI est désactivé .

J'espère que cela t'aides!

2user1023110 @

En fait, cela ne vous dit pas si l'émulateur est connecté au web via le PC hôte. Si vous exécutez sur un PC et le sans fil de l' ordinateur est éteint il retournera encore vrai tant l'émulateur pense son à l'état en ligne . La seule façon que je ai été en mesure de déterminer avec certitude si l'émulateur est vraiment en ligne est d'essayer de récupérer une page et de voir si elle réussit ou non .