ANDROID: si le WiFi est activé ET actif, le lancement d'une intention
C'est ce que je voudrais faire :
=> SI le WiFi est activé ET actif, le lancement d'une intention (c'est en fait une WebView qui obtient son contenu=>les instructions de mon application sur le web)
=> SI NON, alors je voudrais lancer une autre intention, de sorte que je ne montre pas une WebView avec "page Web non disponible ... La page Web à l' http://www.mywebsite.com peut-être temporairement indisponible ou il peut avoir déplacé ..."
J'ai enseigné d'abord à utiliser
si(wi-fi.isWifiEnabled())
mais cela ne dit pas si la connexion Wifi est ACTIVE ou non. Il dit seulement que l'utilisateur a tourné le commutateur sur. L'appareil peut ou peut ne pas être connecté... Est-ce correct ?
Puis j'ai essayé d'utiliser :
si (wi-fi.getConnectionInfo().getSSID()!= null)
mais j'ai remarqué qu'il retourne une chaîne de caractères, même si la connexion a été perdue ou a été désactivée ... ?
Comment dois-je faire alors ?
wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE);
Intent intent_instructions;
if (wifi.getConnectionInfo().getSSID()!= null){
Log.i("Hub", "WiFi is enabled AND active !");
Log.i("Hub", "SSID = "+wifi.getConnectionInfo().getSSID());
intent_instructions = new Intent(this, Instructions.class);
}else{
Log.i("Hub", "NO WiFi");
intent_instructions = new Intent(this, Instructions_No_WiFi.class);
}
this.startActivity(intent_instructions);
Est-il une façon plus générale pour tester si l'appareil dispose de la connectivité à l'internet, juste avant le lancement d'une intention ? soit par Wifi, 3G, etc ...
Merci d'avance pour votre aide.
- WIFI_STAT_ENABLED signifie que le WIFI, la radio est sur. Cela n'a rien à faire avec si ou pas, vous êtes bien connecté à un point d'accès.
- en effet, alors que suggérez-vous ?
- Double Possible de comment faire pour voir si le wifi est connecté sous android
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le code suivant pour vérifier la connectivité:
Assurez-vous que vous avez enregistré le android.net.conn.CONNECTIVITY_CHANGE intention dans votre Manifeste, ou autre chose, vous ne serez jamais recevoir une notification indiquant que vous êtes en ligne.
J'ai été aux prises avec ce problème depuis quelques jours et je viens de réalisé que j'avais besoin de vous inscrire CONNECTIVITY_CHANGE et pas seulement WIFI_STATE_CHANGED.
isConnectedViaWiFi
?Essayer
android.net.ConnectivityManager.getActiveNetworkInfo()
: si elle renvoienull
vous n'avez pas de connexion; si elle renvoie unNetworkInfo
objet, vous pouvez vérifier l'état de votre connexion avecNetworkInfo.getState()
, et si c'estNetworkInfo.State.CONNECTED
alors vous êtes connectés, sinon vous ne l'êtes pas.Vous pouvez le faire comme suit:
Vous obtiendrez 0,1,2,3 selon lequel l'état le Wifi est, par exemple, 2 est la connexion, vous pouvez vérifier le reste dans les documents
Dans votre BroadcastReceiver classe:
Et dans votre AndroidManifest.xml assurez-vous que vous vous inscrivez pour la android.net.wifi.suppliant.CONNECTION_CHANGE diffusion intention.
isConnected()
ne fonctionne pas entièrement ok, à la recherche de quelque chose d'autrece code de vérifier si vous êtes en wifi ou en 3g ou rien , dans le cas du wifi, mais pas connecté à un filet ou 3g ont problème de signal de détecter ce détails, avec
DetailedStates