2 votes

Comment détecter si le WIFI est connecté à Internet ?

Je construis une application Android et j'utilise le code ci-dessous pour détecter s'il y a une connexion réseau. Il fonctionne bien et détecte à la fois les réseaux mobiles et WIFI.

Mon problème est de savoir comment détecter une connexion Internet réelle. Le code ci-dessous renvoie un résultat vrai lorsqu'il est connecté à un WIFI, mais le WIFI n'est pas nécessairement connecté à l'Internet.

Le code

    protected boolean checkInternetConnection() {     
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);  
    // test for connection     
    if (cm.getActiveNetworkInfo() != null             
            && cm.getActiveNetworkInfo().isAvailable()             
            && cm.getActiveNetworkInfo().isConnected()) {

        return true;

        } 
    else {               
        return false;

        } 

} //end checkInterneConnection method

Merci pour votre temps.

Mel

1voto

Dommel Points 427

Vous devriez essayer d'atteindre une adresse internet. Pour cela, vous devez vérifier la classe InetAdress et la méthode isReachable : http://developer.Android.com/reference/java/net/InetAddress.html#isReachable%28int%29

1voto

Raghu Points 2129

Ce morceau de code va vérifier si votre appareil est connecté à Internet, si le signal est faible, il affichera un toast, sinon, il ne le fera pas,

ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo Info = conMan.getActiveNetworkInfo();

        if(Info == null){
            Toast.makeText(RegisterActivity.this,"Network Connection Failed! ", Toast.LENGTH_SHORT).show();
        }

0voto

wsgfz Points 396

Vous pouvez essayer de faire un ping http://google.com ou faire quelque chose comme ça pour confirmer qu'il est possible de visiter Internet.

0voto

pavle Points 439

Vous devriez essayer ça :

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

Et pour vérifier uniquement le wifi, c'est plus simple :

private boolean isWifiConnected() {
    int WIFI_STATE = wifi.getWifiState();
    if(WIFI_STATE == WifiManager.WIFI_STATE_ENABLED)
        return true;

    return false;
}

0voto

Giovesoft Points 309

Ce code va vraiment tester la connexion internet :

public static boolean isInternetAvailable() {
   try {
      InetAddress address = InetAddress.getByName("google.com");
      return address.isReachable(2000); //This really tests if the ip, given by the url, is reachable 
      //return !address.equals(""); //This just tests if the IP is available but it could be taken in a previous request when internet was available
   } catch (Exception e) {
     Log.d("Internet check", "Unable to reach the url: "+url);
   }

   return false;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X