Android 与H5的交互简单实现

简单介绍WebView加载H5页面的方法

注:由于android版本的不同webview加载h5拦截方法也会不同下面代码已标出分界线android7.0

 WebSettings settings = wv_goods_detail.getSettings();//wv_goods_detail为初始化的webview
        settings.setJavaScriptEnabled(true);
        if (Build.VERSION.SDK_INT >= 21) {//android的SDK的版本判断
            settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
        }
        settings.setLoadsImagesAutomatically(true);// 设置可以自动加载图片
        settings.setAppCacheEnabled(true);// 应用可以有缓存
        settings.setDomStorageEnabled(true);// 设置可以使用localStorage
        // 优先使用缓存(这样会导致同一个url,若该页面修改了,则会出现此url还是用的本地缓存的)
//        settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
        settings.setCacheMode(WebSettings.LOAD_DEFAULT);
        settings.setAllowFileAccess(true);// 可以读取文件缓存(manifest生效)
        settings.setPluginState(WebSettings.PluginState.ON);
        settings.setJavaScriptCanOpenWindowsAutomatically(true);

        // 加速WebView加载的方法

        settings.setRenderPriority(WebSettings.RenderPriority.HIGH); // 提高渲染的优先级

        wv_goods_detail.setWebViewClient(new WebViewClient() {

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {

                super.onPageStarted(view, url, favicon);

            }

            //7.0以上
            @TargetApi(Build.VERSION_CODES.LOLLIPOP)
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                 if (request.getUrl()!=null){
                    if (Uri.parse("此处为拦截的url").equals(request.getUrl())){//拦截指定的URL
                       //拦截之后的各种操作

                    }else {
                        finish();
                    }

                }
                return true; //代表url由WebView处理
            }

            //7.0以下
            @SuppressWarnings("deprecation")
            @Override
            public boolean shouldOverrideUrlLoading(@NonNull WebView view, @NonNull String url) {
                if (url != null) {
                    if ("此处为拦截的url".equals(url)){//拦截指定的URL
                        //拦截之后的各种操作
                    }else {
                        finish();
                    }
                }
                return true; //代表url由WebView处理
            }

            @Override
            public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {

                handler.proceed();
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);

            }
        });

        wv_goods_detail.loadUrl("此处为加载的h5的url");

猜你喜欢

转载自blog.csdn.net/boomlei/article/details/80313016