1

我需要通过 android 的 htttp 或 https 进行通信,并且我需要为我的应用程序“仅 wifi”进行设置。这是交流的限制。如何实现这样的事情?我找不到有关 AndroidHttpClient 的任何信息仅适用于 Wifi - 或 3G,以及如何限制它。

4

4 回答 4

2

此代码将检查 wifi 连接。

 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;

        }
于 2013-05-22T10:46:35.600 回答
2

我听说过服务中的setNetworkPreference(int preference)方法ConnectivityManager。尽管文档很少,但似乎此方法可以与表示网络类型的整数常量一起使用。

您可以在 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>
于 2013-05-22T10:49:23.340 回答
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;}
于 2013-05-22T10:49:35.290 回答
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;

}
于 2017-05-17T11:53:06.427 回答