2013-05-22 54 views
1

我需要通過htttp或https從android進行通信,並且我需要爲我的應用程序設置「wifi only」。這是溝通的限制。如何實現這樣的事情?我無法找到關於AndroidHttpClient的任何信息,只能使用Wifi或3G,以及如何限制它。僅限Wifi通信

回答

2

此代碼將檢查無線連接。

public static boolean hasWIFIConnection(Context context) 
        { 
         ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 

         NetworkInfo wifiNetwork = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
         if (wifiNetwork != null && wifiNetwork.isConnected()) 
          { 
           return true; 
          } 
return false; 

     } 
+0

您可以檢查WIFI連接是否可用並相應地限制。 – Sandeep

2

我聽說在ConnectivityManager服務setNetworkPreference(int preference)方法。儘管文檔記載不完善,但看起來這種方法可以用於表示網絡類型的整數常量。

您可以找到ConnectivityManager類這樣的常量引用:

我就開始挖掘這種方式。

編輯:

您將需要被授予如下因素權限:

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

嘗試這樣

ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
NetworkInfo[] netInfo = cm.getAllNetworkInfo(); 
for (NetworkInfo ni : netInfo) 
{ 
    if (ni.getTypeName().equalsIgnoreCase("WIFI")) 
     if (ni.isConnected()) 
      haveConnectedWifi = true; 
    if (ni.getTypeName().equalsIgnoreCase("MOBILE")) 
     if (ni.isConnected()) 
      haveConnectedMobile = true;} 
+0

感謝所有的答案,這些都是很好的幫助。使用它們,我可以檢查是否有WiFi連接。但是我怎樣才能讓AndroidHttpClient使用WiFi呢?或者關心它是沒用的?如果沒有Wifi,只需顯示警報對話框並執行任何通信?在調用httpclient之前檢查這個條件,調用 –

+0

。如果wifi不可用,然後顯示警報,否則簡單地繼續。 – Senthil

0

從23 getNetworkInfo開始已被棄用,使用getActiveNetworkInfo

public boolean hasWIFIConnection() 
{ 
    ConnectivityManager connMgr = (ConnectivityManager) ContextProvider.getInstance().getApplication().getSystemService(Activity.CONNECTIVITY_SERVICE); 

    NetworkInfo activeNetwork = connMgr.getActiveNetworkInfo(); 
    if (activeNetwork != null && (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) && activeNetwork.isConnected()) 
    { 
     return true; 
    } 
    return false; 

}