WebView 的基本写法与配置

1. 基本写法

        WebView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                String scheme = Uri.parse(url).getScheme();
                if("http".equals(scheme)||"https".equals(scheme)){
                    return false;//return false 可以正常加载网页,并可过滤掉一些不必要的跳转页面,使后退功能正常
                }else{
                    try{
                        Intent intent=new Intent();
                        intent.setData(Uri.parse(url));
                        startActivity(intent);
                    }catch(Exception e){
                        e.printStackTrace();
                    }
                }
                return true;
            }
            
            //用于捕获非http错误 如:文件找不到,网络连接不上,服务器找不到等问题
            @Override
            public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
                super.onReceivedError(view, request, error);
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                    MyToastUtil.showFastToast(MyWebViewActivity.this,"网页上有错误:"+error.getErrorCode());
                }
            }
            
            //用于捕获http错误 404 500
            @Override
            public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
                super.onReceivedHttpError(view, request, errorResponse);
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                    errorCode=errorResponse.getStatusCode();
                    bridge.setErrorCode(errorResponse.getStatusCode());
                    view.loadUrl("file:///android_asset/html/error.html");
                }else{
                    view.loadUrl("file:///android_asset/html/error.html");
                }
            }
            
            //网页开始加载
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
            }
            
            //加载资源
            @Override
            public void onLoadResource(WebView view, String url) {
                super.onLoadResource(view, url);
            }
            
            //网页加载完成
            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
            }
        });        
        //设置加载进度
        WebView.setWebChromeClient(new WebChromeClient(){
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                if(newProgress==100){
                    ProgressBar.setVisibility(View.GONE);
                }else{
                    ProgressBar.setVisibility(View.VISIBLE);
                    ProgressBar.setProgress(newProgress);
                }
            }
        });


        //加载网页,同时
        WebView.loadUrl(url);//, header);
[注1]WebJsBridge bridge 是Java与JS交互的一个实现类
2. 基本配置
    private void setWebView(WebView mWebView) {
        WebSettings webSetting = mWebView.getSettings();
        webSetting.setJavaScriptEnabled(true);
        webSetting.setJavaScriptCanOpenWindowsAutomatically(true);
        webSetting.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
        webSetting.setSupportZoom(true);
        webSetting.setBuiltInZoomControls(true);
        webSetting.setDisplayZoomControls(false);
        webSetting.setLoadWithOverviewMode(true);
        webSetting.setUseWideViewPort(true);
        webSetting.setCacheMode(WebSettings.LOAD_DEFAULT);
        webSetting.setLoadsImagesAutomatically(true);
        webSetting.setAllowFileAccess(true);
        webSetting.setSupportMultipleWindows(false);
        webSetting.setAppCacheEnabled(true);
        webSetting.setDatabaseEnabled(true);
        webSetting.setDomStorageEnabled(true);
        webSetting.setGeolocationEnabled(true);
//        webSetting.setAppCacheMaxSize(Long.MAX_VALUE);//过时方法
        webSetting.setAppCachePath(this.getDir("webcache", 0).getPath());
//        webSetting.setDatabasePath(this.getDir("databasess", 0).getPath());//过时方法
        webSetting.setDatabaseEnabled(true);
        webSetting.setAppCacheEnabled(true);
        webSetting.setGeolocationDatabasePath(this.getDir("geolocation", 0)
                .getPath());
//        webSetting.setPluginState(WebSettings.PluginState.ON_DEMAND);//过时方法
//        webSetting.setRenderPriority(WebSettings.RenderPriority.HIGH);//过时方法
//		可以通过设置UA,修改浏览器的标识
//		webSetting.setUserAgentString("");
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值