Android WebView WebResourceResponse 拦截js、css、png存储

 //API 21之前使用
        @Override
        public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
            return addLocationAssets(url);
        }

        //API 21之后使用
        @SuppressLint("NewApi")
        @Override
        public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
            return addLocationAssets(request.getUrl().toString());
        }

        //需要加载的本地js资源
        String[] jsFileName = {"bootstrap.min.js", "common-1.0.js", "fastclick.js", "hua-1.0.js", "jquery-1.9.1.js", "juicer-min.js", "map_min.js", "map_webapi.js", "swiper.min.js", "viewpager.js"};
        //需要加载的本地image资源
        String[] imageFileName = {"i_bbtn_ico01.png", "i_bbtn_ico02.png", "i_bbtn_ico03.png", "i_bbtn_ico04.png", "i_bbtn_ico05.png", "i_tcdt_ico01.png", "i_tcdt_ico02.png", "i_tcsf_zwdd.png"};
        //需要加载的本地css资源
        String[] cssFileName = {"bootstrap.css", "css_h5.css", "public-1.1.css", "swiper.min.css"};
        //后台Image路径
        String imageUrl = "mtss/images/";
        //后台js路径
        String jsUrl = "mtss/myjs/";
        //后台Css路径
        String cssUrl = "mtss/mycss/";
        private WebResourceResponse addLocationAssets(String webResourceUrl) {
            if (webResourceUrl.contains(UrlBuild.HEARD_URL)) {
                WebResourceResponse webResourceResponse = null;
                //加载图片
                if (webResourceUrl.contains(imageUrl)) {
                    //取本地JS文件
                    for (int i = 0; i < imageFileName.length; i++) {
                        if (webResourceUrl.contains(imageFileName[i])) {
                            webResourceResponse = addImageWebResource(imageFileName[i]);
                            if (webResourceResponse != null) {
                                Log.e("WebResourceRespons2rimg", imageFileName[i]);
                            }
                            break;
                        }
                    }
                }

                //加载js
                if (webResourceUrl.contains(jsUrl)) {
                    //取本地JS文件
                    for (int i = 0; i < jsFileName.length; i++) {
                        if (webResourceUrl.contains(jsFileName[i])) {
                            webResourceResponse = addJsWebResource(jsFileName[i]);
                            if (webResourceResponse != null) {
                                Log.e("WebResourceRespons2rjs", jsFileName[i]);
                            }
                            break;
                        }
                    }
                }
                //加载css
                if (webResourceUrl.contains(cssUrl)) {
                    //取本地JS文件
                    for (int i = 0; i < cssFileName.length; i++) {
                        if (webResourceUrl.contains(cssFileName[i])) {
                            webResourceResponse = addCssWebResource(cssFileName[i]);
                            if (webResourceResponse != null) {
                                Log.e("WebResourceRespons2rcss", cssFileName[i]);
                            }
                            break;
                        }
                    }
                }
                return webResourceResponse;
            }
            return null;
        }

        /**
         * @return 本地css
         */
        private WebResourceResponse addCssWebResource(String cssName) {
            try {
                return new WebResourceResponse("text/css", "utf-8", getAssets().open("css/" + cssName));
            } catch (IOException e) {
                e.printStackTrace();
            }
            //需处理特殊情况
            return null;
        }

        /**
         * @return 本地js
         */
        private WebResourceResponse addJsWebResource(String jsName) {
            try {
                return new WebResourceResponse("application/x-javascript", "utf-8", getAssets().open("js/" + jsName));
            } catch (IOException e) {
                e.printStackTrace();
            }
            //需处理特殊情况
            return null;
        }

        /**
         * @return 本地image
         */
        private WebResourceResponse addImageWebResource(String imageName) {
            InputStream is = null;
            try {
                is = getApplicationContext().getAssets().open("images/" + imageName);
            } catch (IOException e) {
                e.printStackTrace();
                return null;
            }
            return new WebResourceResponse("image/png", "utf-8", is);
        }

 

posted @ 2021-03-23 18:05  张亚楠  阅读(185)  评论(0编辑  收藏  举报