Vérification de la connexion internet sur android

J'ai le code suivant pour la vérification de la connexion à internet wifi/EDGE/GPRS/3G sur mon application.

le code est

public static boolean checkConn(Context ctx) {
    ConnectivityManager conMgr = (ConnectivityManager) ctx
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    if (conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED
        || conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING) {
        return true;
    } else if (conMgr.getNetworkInfo(0).getState()==NetworkInfo.State.DISCONNECTED
        || conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED){
        return false;
    }
    return false;
}

et je l'appelle comme ci-dessous :

if (CheckInternet.checkConn(introPage.this) == true) {
    Intent toMainPage = new Intent(introPage.this, mainPage.class);
    System.gc();
    startActivity(toMainPage);
} else if (CheckInternet.checkConn(getApplicationContext()) == false) {
    Toast.makeText(getApplicationContext(),
        "Sorry, No internet connectivity found", Toast.LENGTH_SHORT)
            .show();
}

Mais je rencontre un problème, qui est que si je suis connecté au wifi, et j'ouvre l'application, il fonctionne très bien, mais si je ferme l'application et de désactiver le wifi et le ré-ouvrir l'application, il n'est pas à travers l'erreur de "pas de connexion" , j'ai besoin d'éteindre mon appareil et rallumez-le, et même affaire est si le wifi est désactivé, et j'ouvre l'application, il déclenche une erreur de "pas de connexion", et si je l'allume, néanmoins, il jette le même message d'erreur "pas de connexion", jusqu'à ce que, à moins que je éteignez et rallumez l'appareil.

  • fermer l'application en appuyant sur la touche accueil ou retour?.. Coz si u fermer en appuyant sur hme puis application est en arrière-plan et oncreate va pas me faire virer
  • mais pourquoi même allumer le wifi, il donne toujours pas de problème de connexion?
  • Je ne suis pas sûr que l'endroit où vous êtes à l'appel de cette ligne de code...Si vous êtes juste à la vérification de cette condition en vertu activités oncreate, elle sera appelée qu'une seule fois...
  • cela peut être question de l'appareil android, même problème, je suis dans mon HTC Hero, même ma connexion wi-fi est
  • Je suis à l'appel de cette sur chaque setOnClickListener() du bouton
  • J'ai vibrant samsung, mais même sur émulateur aussi ayant le même problème
  • double possible de Comment vérifier l'accès à internet sur Android? InetAddress jamais délais d'attente
  • vous n'avez pas à tester si la fonction renvoie la valeur depuis le si évalue cette. Vous pouvez écrire vos instructions conditionnelles comme ceci: if(CheckInternet.checkConn(introPage.this)) { ... } else { ... }

InformationsquelleAutor kaibuki | 2010-11-03