2013-05-22 56 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; 

}