2017-03-19 16 views
0

私のアプリでは、サーバーに接続する前にユーザーがwifiに接続されていることを確認する必要があります。私はそうするには2つの方法を見つけましたが、十分であるかどうかはわかりません。WifiがAndroidで接続されているかどうかを確認する適切な方法

まず私はこれを追加してい:

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

そして私はこれをやっている:デバイスがであるかどうかをwifiManager.isWifiEnabled()リターンが無線LANにを接続するか、単に場合

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; 
    } 

は、だから私は思っていましたwifiがオンになっています。もしそうなら、それを一人で使うだけで十分ですか?

+0

可能な重複http://stackoverflow.com/questions/3841317/how-do -i-see-if-wi-fi-is-on-android) –

答えて

0

WifiManager.isWifiEnabled()は、端末のWi-Fiがオンになっているかどうかのみを確認します。 NetworkInfo.isConnected()またはNetworkInfo.isConnectedOrConnecting()を使用して、ネットワークに接続されているかどうかを確認してください。私は、これは動作するはずと信じて

+0

しかし、 'NetworkInfo.isConnected()'は、デバイスがモバイルデータに正しく接続されていてもtrueを返しますか?それを行うための安全な方法は私の2番目の方法ですか? – riadrifai

+0

はい、上記の接続タイプのチェックと組み合わせて使用​​する必要があります。 – Daniel

0

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

     return (cm != null) && (cm.getActiveNetworkInfo() != null) && 
       (cm.getActiveNetworkInfo().getType() == 1); 
    } 
[どのように私はのWi-Fiは、Android上で接続されているかどうかを確認していますか?](の
関連する問題