2013-03-07 3 views
0

Dans mon application, lorsque l'application est lancée pour la première fois, pendant mon écran de démarrage, je vérifie la connectivité réseau. Si la connectivité réseau est présente, je passe à la connectivité Internet en appelant la méthode ci-dessous. Cependant, volontairement, je désactive ma connexion Internet (je suis connecté au routeur, mais je ne peux pas entrer dans les pages web de mon navigateur), mais la méthode ci-dessous me renvoie toujours -200- qui est TRUE pour la connectivité Internet.HttpURLConnection urlc

public boolean hasActiveInternetConnection() 
{ 
    try 
    { 
     HttpURLConnection urlc = (HttpURLConnection) (new URL("http://www.google.com").openConnection()); 
     urlc.setRequestProperty("User-Agent", "Test"); 
     urlc.setRequestProperty("Connection", "close"); 
     urlc.setConnectTimeout(3000); 
     urlc.setReadTimeout(4000); 
     urlc.connect(); 
     Log.i("Splash", Integer.toString(urlc.getResponseCode())); 
     return (urlc.getResponseCode() == 200); 
    } catch (IOException e) 
    { 
     return (false); 
    } 
} 
+0

Probablement c'est le routeur qui répond à votre demande. De toute façon, pourquoi ne pas aller voir ce qui est envoyé comme réponse? – PCoder

+0

PCoder, voici la réponse que je reçois de ping google.com lorsque je désactive la connectivité Internet. C: \ Windows \ System32> ping google.com --- Pinging google.com [198.18.1.9] avec 32 octets de données: --- Réponse de 192.168.1.254: Destination hôte non accessible .-- - Statistiques de ping pour 198.18.1.9:--- Paquets: Envoyés = 4, Reçus = 4, Perdus = 0 (0% de perte), – tony9099

Répondre

0

Vous pouvez utiliser cette fonction pour vérifier la connexion internet:

public boolean isInternetConnection() { 
    ConnectivityManager cn = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); 
    NetworkInfo nf = cn.getActiveNetworkInfo(); 
    if (nf != null && nf.isConnected() == true) 
     return true; 
    else 
     return false; 
} 

Vous devez ajouter l'autorisation manifeste pour ceci:

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
+0

Vishal Vijay, vérifie la connectivité réseau et non Internet. Cela retournera vrai, si vous êtes connecté à un routeur, wifi, même s'il n'y a pas de connectivité Internet. – tony9099

+0

L'avez vous essayé ?. –

+0

plus de 3,2 millions de fois. probablement 3,21 ou 3,22. incertain. – tony9099

1

Essayez d'inclure ce code avant openConnection()

if (android.os.Build.VERSION.SDK_INT > 9) { 
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
        StrictMode.setThreadPolicy(policy); 
       }