Comment puis-je voir si Wi-Fi est connecté sur Android?

Je ne veux pas que mon utilisateur tente même de télécharger quelque chose à moins d'avoir connecté une connexion Wi-Fi. Cependant, je ne peux que savoir si le Wi-Fi est activé, mais ils peuvent encore avoir une connexion 3G.

android.net.wifi.WifiManager m = (WifiManager) getSystemService(WIFI_SERVICE); android.net.wifi.SupplicantState s = m.getConnectionInfo().getSupplicantState(); NetworkInfo.DetailedState state = WifiInfo.getDetailedStateOf(s); if (state != NetworkInfo.DetailedState.CONNECTED) { return false; } 

Cependant, l'état n'est pas ce que je m'attends. Même si Wi-Fi est connecté, je reçois OBTAINING_IPADDR comme état.

  • Comment obtenir le contexte d'application à partir du récepteur de diffusion?
  • Comment convertir le bitmap en croquis au crayon dans Android?
  • Pourquoi la méthode onPause est appelée immédiatement après onCreate
  • Aperçu quotidien du calendrier personnalisé dans Android
  • Comment faire pour récupérer la pile pour l'activité avec plusieurs fragments?
  • Après la mise à jour - crash com.google.android.gms: play-services: 5.2.8
  • Port LWJGL vers l'Android
  • Intégrez la visionneuse PDF pour l'application PhoneGap
  • Comment cacher un bouton par programme?
  • Appeler la méthode onResume après une alerte est rejetée dans Android?
  • Vertical TextView dans Android
  • Réutiliser un attribut Android standard sur ma vue personnalisée
  • 15 Solutions collect form web for “Comment puis-je voir si Wi-Fi est connecté sur Android?”

    Vous devriez pouvoir utiliser le ConnectivityManager pour obtenir l'état de l'adaptateur Wi-Fi. De là, vous pouvez vérifier s'il est connecté ou même disponible .

     ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); if (mWifi.isConnected()) { // Do whatever } 

    REMARQUE: Il convient de noter (pour nous n00bies ici) que vous devez ajouter

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

    à ton

    AndroidManifest.xml pour que cela fonctionne.

    NOTE2 : networkInfo public NetworkInfo getNetworkInfo (int networkType) est maintenant obsolète:

    Cette méthode a été obsolète au niveau API 23. Cette méthode ne supporte pas les réseaux connectés multiples du même type. Utilisez getAllNetworks () et getNetworkInfo (android.net.Network) à la place.

    Puisque la méthode NetworkInfo.isConnected () est maintenant obsolète dans API-23 , voici une méthode qui détecte si l'adaptateur wifi est activé et est également connecté à un point d'accès à l'aide de WifiManager à la place:

     private boolean checkWifiOnAndConnected() { WifiManager wifiMgr = (WifiManager) getSystemService(Context.WIFI_SERVICE); if (wifiMgr.isWifiEnabled()) { // Wi-Fi adapter is ON WifiInfo wifiInfo = wifiMgr.getConnectionInfo(); if( wifiInfo.getNetworkId() == -1 ){ return false; // Not connected to an access point } return true; // Connected to an access point } else { return false; // Wi-Fi adapter is OFF } } 

    J'utilise simplement ce qui suit:

     SupplicantState supState; wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); supState = wifiInfo.getSupplicantState(); 

    Ce qui renverra un de ces états au moment où vous appelez getSupplicantState ();

    ASSOCIÉ – Association terminée.

    ASSOCIATION – Essayer d'associer à un point d'accès.

    COMPLETED – Toutes les authentifications complétées.

    DISCONNECTED – Cet état indique que le client n'est pas associé, mais il est susceptible de commencer à chercher un point d'accès.

    DORMANT – Un état ajouté à l'Android qui est signalé lorsqu'un client émet une commande explicite DISCONNECT.

    FOUR_WAY_HANDSHAKE – WPA 4-Way Key Handshake en cours.

    GROUP_HANDSHAKE – WPA Group Key Handshake en cours.

    INACTIVE – Etat inactif.

    INVALIDE – Un pseudo-état qui ne devrait normalement jamais être vu.

    SCANNING – Recherche d'un réseau.

    UNINITIALISÉ – Pas de connexion.

    J'ai examiné quelques questions comme celle-ci et je suis arrivé à ceci:

     ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); NetworkInfo wifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); NetworkInfo mobile = connManager .getNetworkInfo(ConnectivityManager.TYPE_MOBILE); if (wifi.isConnected()){ // If Wi-Fi connected } if (mobile.isConnected()) { // If Internet connected } 

    J'utilise si pour ma vérification de licence dans Root Toolbox PRO, et cela semble fonctionnel.

    Je l'utilise dans mes applications pour vérifier si le réseau actif est Wi-Fi:

     ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo ni = cm.getActiveNetworkInfo(); if (ni != null && ni.getType() == ConnectivityManager.TYPE_WIFI) { // Do your work here } 
     ConnectivityManager manager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); boolean is3g = manager.getNetworkInfo( ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting(); boolean isWifi = manager.getNetworkInfo( ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting(); Log.v("", is3g + " ConnectivityManager Test " + isWifi); if (!is3g && !isWifi) { Toast.makeText( getApplicationContext(), "Please make sure, your network connection is ON ", Toast.LENGTH_LONG).show(); } else { // Put your function() to go further; } 

    Essayez cette méthode.

     public boolean isInternetConnected() { ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); boolean ret = true; if (conMgr != null) { NetworkInfo i = conMgr.getActiveNetworkInfo(); if (i != null) { if (!i.isConnected()) { ret = false; } if (!i.isAvailable()) { ret = false; } } if (i == null) ret = false; } else ret = false; return ret; } 

    Cette méthode aidera à trouver la connexion Internet disponible ou non.

    Alors que la réponse de Jason est correcte, de nos jours getNetWorkInfo (int) est une méthode obsolète. Donc, la prochaine fonction serait une bonne alternative:

     public static boolean isWifiAvailable (Context context) { boolean br = false; ConnectivityManager cm = null; NetworkInfo ni = null; cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); ni = cm.getActiveNetworkInfo(); br = ((null != ni) && (ni.isConnected()) && (ni.getType() == ConnectivityManager.TYPE_WIFI)); return br; } 

    Voici ce que j'utilise comme méthode d'utilité dans mes applications:

     public static boolean isDeviceOnWifi(final Context context) { ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); return mWifi != null && mWifi.isConnectedOrConnecting(); } 

    En utilisant WifiManager vous pouvez effectuer:

     WifiManager wifi = (WifiManager) getSystemService (Context.WIFI_SERVICE); if (wifi.getConnectionInfo().getNetworkId() != -1) {/* connected */} 

    La méthode getNeworkId retourne -1 seulement quand elle n'est pas connectée à un réseau;

    Cela fonctionne pour moi:

      ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); // Mobile State mobile = conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState(); // Wi-Fi State wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState(); // And then use it like this: if (mobile == NetworkInfo.State.CONNECTED || mobile == NetworkInfo.State.CONNECTING) { Toast.makeText(Wifi_Gprs.this,"Mobile is Enabled :) ....",Toast.LENGTH_LONG).show(); } else if (wifi == NetworkInfo.State.CONNECTED || wifi == NetworkInfo.State.CONNECTING) { Toast.makeText(Wifi_Gprs.this,"Wifi is Enabled :) ....",Toast.LENGTH_LONG).show(); } else { Toast.makeText(Wifi_Gprs.this,"No Wifi or Gprs Enabled :( ....",Toast.LENGTH_LONG).show(); } 

    Et ajoutez cette autorisation:

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

    Dans la nouvelle version Android

     private void getWifiInfo(Context context) { ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); Network[] networks = connManager.getAllNetworks(); if(networks == null || networks.length == 0) return; for( int i = 0; i < networks.length; i++) { Network ntk = networks[i]; NetworkInfo ntkInfo = connManager.getNetworkInfo(ntk); if (ntkInfo.getType() == ConnectivityManager.TYPE_WIFI && ntkInfo.isConnected() ) { final WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); final WifiInfo connectionInfo = wifiManager.getConnectionInfo(); if (connectionInfo != null) { // add some code here } } } } 

    Et ajouter la prémission aussi

    C'est une solution plus simple. Voir la question de débordement de la pile Vérification du Wi-Fi activé ou non sur Android .

    PS N'oubliez pas d'ajouter le code au fichier manifest.xml pour permettre l'autorisation. Comme indiqué ci-dessous.

     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" > </uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" > </uses-permission> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" > </uses-permission> 

    essayer

     wifiManager.getConnectionInfo().getIpAddress() 

    Cela renvoie 0 jusqu'à ce que l'appareil ait une connexion utilisable (sur ma machine, un Samsung SM-T280, Android 5.1.1).

    Vous pouvez activer WIFI s'il n'est pas activé comme suit: 1. vérifiez l'état WIFI tel que répondu par @Jason Knight 2. s'il n'est pas activé, activez-le, n'oubliez pas d'ajouter l'autorisation WIFI dans le fichier manifeste

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

    Votre classe Java devrait être comme ça

     public class TestApp extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //check WIFI activation ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); if (mWifi.isConnected() == false) { showWIFIDisabledAlertToUser(); } else { Toast.makeText(this, "WIFI is Enabled in your devide", Toast.LENGTH_SHORT).show(); } } private void showWIFIDisabledAlertToUser(){ AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); alertDialogBuilder.setMessage("WIFI is disabled in your device. Would you like to enable it?") .setCancelable(false) .setPositiveButton("Goto Settings Page To Enable WIFI", new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog, int id){ Intent callGPSSettingIntent = new Intent( Settings.ACTION_WIFI_SETTINGS); startActivity(callGPSSettingIntent); } }); alertDialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog, int id){ dialog.cancel(); } }); AlertDialog alert = alertDialogBuilder.create(); alert.show(); } 

    }

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.