J'ai une question spécifique sur la connexion wifi dans Android.Je travaille sur un projet qui télécharge des données à partir du serveur web et chaque fois avant de commencer la synchronisation, je vérifie la connexion Internet comme ceci:Android vérifier connexion wifi
public static boolean isOnline(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
return true;
}
return false;
}
public static boolean chkNetworkStatus(Context context) {
boolean result = false;
new Thread() {
@Override
public void run() {
for(int i=0;i<3;i++){
HttpGet requestForTest = new HttpGet("http://m.google.com");
try {
new DefaultHttpClient().execute(requestForTest);
responded = true;
} catch (Exception e) {
responded = false;
}
}
}
}.start();
boolean isOnline = isOnline(context);
if(responded && isOnline){
result = true;
} else {
result = false;
}
Log.e("","responded : "+responded);
return result;
}
mais dans cette situation quand je suis toujours connecté au wifi et je marche (perte de connexion) et le bouton de synchronisation de presse, il est encore de retour vrai parce que je suis connecté, mais en réalité il ne fait rien.
Y at-il de toute façon que je peux détecter cela ou je devrais utiliser la fonction connectionTimeOut
dans la classe HttpURLConnection
que j'utilise?
Il peut y avoir plusieurs raisons possibles lorsque votre application dispose d'une connexion Internet mais le serveur ne répond pas ou la connexion n'est pas établie. Il est donc préférable de régler TimeOut avec votre demande Web. – user370305
En fait je lis la réponse du serveur en morceaux, c'est pourquoi j'utilise la classe 'HttpURLConnection' qui fonctionne parfaitement dans mon cas et la façon dont j'ai résolu mon problème est de définir connectionTimeOut et d'utiliser try-catch pour afficher un dialogue une erreur. Voilà pourquoi je vais accepter votre réponse:) –