3

我目前正在使用 webview 来显示本地 HTML 内容,但该内容可能指的是在线图像。我需要的是防止在用户使用 3G/4G 时下载此在线数据。我只希望 webview 只能通过 Wifi 访问互联网。我没有找到任何方法来做到这一点......这可能吗?

4

1 回答 1

1

处理要加载的 url 和不加载的 url:-

“将 WebView 客户端与您的 Web 视图一起使用并覆盖此方法 shouldOverrideUrlLoading 并且如果它不是使用不同状态的本地 url 之一并且如果条件基于您在该方法中的要求,则不要调用任何 url”


要决定它是在 wi-fi 上还是 3G/4G 上:- 使用下面的代码,您可以检测手机是否通过 wifi 或数据连接,并可以做出相应的行为:

            public static boolean isDataEnabled(Context context)
            {
                return (isMobileDataEnabled(context) || isWifiEnabled(context));
            }


            public static boolean isMobileDataEnabled(Context context)
            {
                if(context == null)
                    return false;
                ConnectivityManager connectivityManager = (ConnectivityManager)
                    context.getSystemService(Context.CONNECTIVITY_SERVICE);
                NetworkInfo networkInfo = null;
                if (connectivityManager != null) {
                    networkInfo =
                        connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
                }
                return networkInfo == null ? false : networkInfo.isConnected();
            }

            public static boolean isWifiEnabled(Context context)
            {
                if(context == null)
                    return false;
                ConnectivityManager connectivityManager = (ConnectivityManager)
                    context.getSystemService(Context.CONNECTIVITY_SERVICE);
                NetworkInfo networkInfo = null;
                if (connectivityManager != null) {
                    networkInfo =
                        connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
                }
                return networkInfo == null ? false : networkInfo.isConnected();
            }


    //Chceking user preference:

        public static boolean shouldUseOnlineServices(Context context)
        {
            if(context == null || isDataEnabled(context) == false)
                return false;

            SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
            if(pref != null)
            {
                //String wifi = pref.getString("pref_camera_when_to_use_online_services","1");
                //boolean onlyOnWifi = (wifi.equals("0")== true) ? false:true;
                boolean onlyOnWifi = pref.getBoolean("pref_radio_wifi", false);
                if(onlyOnWifi == false)
                    return true;
                if(isWifiEnabled(context) == true)
                    return true;
                else
                    return false;
            }

            if(isWifiEnabled(context) == true)
                return true;
            else
                return false;
        }   
于 2013-08-13T06:56:28.057 回答