我目前正在使用webview显示本地html内容,但此内容可能引用在线图像。我需要的是防止用户在3g/4g上下载这些在线数据,我只想让webview只在wifi上上网。
我没找到办法…有可能吗?

最佳答案

要处理要加载和不加载的URL,请执行以下操作:
“将web view client与web视图一起使用,并重写此方法shouldroverrideurlloading,在该方法中,如果不是使用不同状态和if条件的本地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;
        }

关于android - Android Webview对数据的互联网访问限制,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18202472/

10-09 18:35
查看更多