0

Pour mon application, je dois m'assurer que l'utilisateur est connecté au wifi avant tout contact avec le serveur. J'ai trouvé deux méthodes pour le faire, mais je ne suis pas sûr si un suffit.Un bon moyen de vérifier si le Wifi est connecté en android

D'abord, je suis d'ajouter ceci:

WifiManager wifiManager = (WifiManager) getActivity().getApplicationContext() 
      .getSystemService(WIFI_SERVICE); 
if (!wifiManager.isWifiEnabled()) { 
     buildAlertNoWifi(); 
     showProgressDialog(false, ""); 
     return; 
} 

Et puis je fais ceci:

ConnectivityManager cm = (ConnectivityManager) getActivity() 
      .getSystemService(Context.CONNECTIVITY_SERVICE); 

    NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); 
    if (activeNetwork != null) { // connected to the internet 
     if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) { 
      // connected to wifi 

     } else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) { 
      // connected to the mobile provider's data plan 
      Toast.makeText(getContext(), "Make sure you connect to wifi.", Toast.LENGTH_LONG).show(); 
      return; 
     } 
    } else { 
     Toast.makeText(getContext(), "Make sure you connect to wifi.", Toast.LENGTH_LONG).show(); 
     return; 
    } 

Je me demandais si wifiManager.isWifiEnabled() indique si l'appareil est connecté à une connexion Wi-Fi ou tout simplement a wifi activé. Et si oui, est-ce suffisant pour l'utiliser seul?

+0

double possible de [Comment puis-je voir si le Wi-Fi est connecté sur Android?] (Http://stackoverflow.com/questions/3841317/how-do -i-voir-si-wi-fi-est-connecté-sur-android) –

Répondre

0

Je crois que WifiManager.isWifiEnabled() vérifie seulement si le wifi de l'appareil est allumé. Veuillez utiliser NetworkInfo.isConnected() ou NetworkInfo.isConnectedOrConnecting() pour vérifier s'il est connecté à un réseau.

+0

Mais 'NetworkInfo.isConnected()' retournerait vrai même si le périphérique est connecté à des données mobiles droit? Donc, un moyen sûr de le faire est ma 2ème voie? – riadrifai

+0

Oui, vous devriez l'utiliser en combinaison avec votre chèque pour le type de connectivité ci-dessus. – Daniel

0

Je crois que cela devrait fonctionner,

public boolean isWifiConnected() 
    { 
     ConnectivityManager cm = (ConnectivityManager)this.mContext.getSystemService(Context.CONNECTIVITY_SERVICE); 

     return (cm != null) && (cm.getActiveNetworkInfo() != null) && 
       (cm.getActiveNetworkInfo().getType() == 1); 
    }