2010-10-06 21 views
0

J'ai un IntentService qui effectue certains appels de service Web. Avant de faire ces appels, je vérifie que l'appareil dispose d'une connectivité réseau. Je le fais comme ceci:Problème lors de la vérification de la connectivité réseau

private boolean isOnline() { 
    ConnectivityManager connec = (ConnectivityManager)getSystemService(getApplicationContext().CONNECTIVITY_SERVICE); 
    return connec.getNetworkInfo(0).isConnectedOrConnecting(); 
} 

Malheureusement, quand je suis débogage sur mon appareil Android, ce faux retourne quand j'ai à la fois un réseau et une connexion sans fil.

Quelques informations intéressantes sur connec.getNetworkInfo (0):

mIsAvailable = true 
mNetworkType = 0 
mTypeName = "mobile" 
mState.name = "DISCONNECTED" 

Il est clair que ce code ne suffit pas (il serait peut-être seulement vrai revenir si j'envoyé quelques bits sur le réseau et tourné la radio?) . De plus, comme je ne connais pas très bien le ConnectivityManager, je suppose que je devrais probablement scanner tous les réseaux (ie: getNetworkInfo (0 à N)).

Comment puis-je accomplir correctement ce que je veux ici?

Répondre

4

Essayez ceci:

public static boolean isNetworkConnected(Context context){ 
    ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo network = cm.getActiveNetworkInfo(); 

    if(network != null){ 
     return network.isAvailable(); 
    } 

    return false; 
} 
+0

Ya cela fonctionnera. J'ai trouvé ceci, mais je n'avais pas encore mis à jour ce post. Merci – Andrew

+0

Et ajoutez également permission de manifester – DuyguK