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 { ... }
Vous devez vous connecter pour publier un commentaire.
Parfois la connexion active n'est pas en premier dans la liste, ou s'il est inactif ou dans un état d'erreur. C'est comment j'allais le faire:
[EDIT 1] N'oubliez pas d'ajouter cette autorisation dans le manifeste de l'application:
Est-ce à vous aider?
Emmanuel
return i != null && i.isConnected() && i.isAvailable();
La réponse courte:
Est mieux:
avec l'autre forme, si Réseau "je" est égal à null ensuite, vérifiez après pour
!i.isConnected()
doit pas (i est nulle).wifi-
Essayez ceci:
et de cette autorisation:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Hi essayez le code suivant :
Ajouter ci-dessous les 3 autorisations dans le Fichier Manifeste Android.
CHANGE_NETWORK_STATE
n'est pas nécessaireJ'ai utilisé pour vérifier si j'ai de la connectivité, n'oubliez pas de vérifier si le NetworkInfo est null ou pas car sur la tablette où la connectivité des données mobiles n'est pas fourni, le NetworkInfo pour TYPE_MOBILE retourner la valeur null.
même que les approuvé réponse, mais en bref :
Vous pouvez utiliser ce génial gist par emil2k :
Cette Vérification de code Wifi et Mobile
1-Ajouter Cette autorisation
2-Créer Un
class
De NomInternet
etcopy
ce Code