2016-10-20 2 views
1

J'utilise Volley pour les appels sur Internet dans mon application et tout fonctionne correctement et en douceur, sauf un état dans lequel mon appareil n'obtient pas la connexion réseau mais vérifie la connexion via le code renvoie true en utilisant le code ci-dessous.Comment gérer com.android.volley.NoConnectionError: java.net.UnknownHostException

public static boolean isNetworkAvailable() { 

    ConnectivityManager connectivityManager = SessionApplication.getConnectivityManager(); 
    if(connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED || 
      connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) { 
     //we are connected to a network 
     return true; 
    } 
    else 
     return false; 
} 

au lieu de retourner l'état du réseau faux en utilisant le code ci-dessus Mes appels web volley me réélisant cette exception "poignée com.android.volley.NoConnectionError: java.net.UnknownHostException".

J'ai vérifié ma connexion Internet en ouvrant le navigateur de mon appareil et j'ai constaté qu'il ne fonctionnait pas. Donc, je suis d'accord avec le comportement de l'application, mais encore j'ai besoin de gérer une telle condition, car ce n'est pas l'utilisateur convivial devrait être invité une boîte de dialogue qui "Vérifiez votre connexion Internet!".

Cela devrait être un des problèmes communs dans Android pourrait tout organisme s'il vous plaît aidez-moi à me donner la meilleure approche pour gérer de tels cas. Merci d'avance.

état du réseau est: enter image description here

Répondre

1

Essayez cette méthode pourrait aider

public boolean isConnectedToInternet(){ 
     connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
      if (connectivityManager != null){ 
       NetworkInfo[] info = connectivityManager.getAllNetworkInfo(); 
       if (info != null){ 
        for (int i = 0; i < info.length; i++){ 
         if (info[i].getState() == NetworkInfo.State.CONNECTED){ 
          return true; 
         } 
        } 
       } 
      } 
      return false; 
    } 
+0

J'ai juste essayé avec ceci mais ceci est également vrai vrai. Voir la capture d'écran ci-joint. –

+0

@SureshSharma votre itinérance est fausse. essayez d'autoriser la connexion réseau en itinérance –

1

Cette exception indique que le problème de la connectivité. En fait, vous pouvez montrer un peu de dialogue sur la connectivité. Surpassant le onErrorResponse(VolleyError error) vous pouvez faire comme ceci -

public void onErrorResponse(VolleyError error) { 
         Log.d(TAG, error.toString()); 
         if (error instanceof NoConnectionError) 
         new AlertDialog.Builder(this).setMessage(
           "Unable to connect to the server! Please ensure your internet is working!").show(); 
        }