关闭

APP开发实战137-WebView功能设计

160人阅读 评论(0) 收藏 举报
分类:

36.9 WebView功能设计

在使用WebView控件时,除了设置是否支持JS、缓存大小、缓存模式、文字编码类型、图片缩放和网页缩放等外,还需重写许多函数,具体如下:

mWebView.setWebViewClient(newWebViewClient() {

            @Override

            public booleanshouldOverrideUrlLoading(WebView view, String url) {

                if(url.startsWith("http:") || url.startsWith("https:") ) {

                    return false;

                }

 

               //网页中如果有tel:、mailto:这样的链接,需要单独处理                taskUrl = url;

                urlTask();

 

                return true;

            }

 

            //在以下几个函数中,需要关闭加载提示框

            @Override

            public void onPageFinished(WebViewview, String url) {

                super.onPageFinished(view,url);

                UIHelper.dismiss(dialogFragment);

            }

 

            @Override

            public void onReceivedError(WebViewview, int errorCode, String description, String failingUrl) {

                super.onReceivedError(view,errorCode, description, failingUrl);

               UIHelper.dismiss(dialogFragment);

 

                //显示提示用户遇到错误,需要重新加载的网页

                mWebView.loadUrl("file:///android_asset/error.html");

            }

 

            @Override

            public voidonReceivedHttpError(WebView view, WebResourceRequest request,WebResourceResponse errorResponse) {

                super.onReceivedHttpError(view,request, errorResponse);

               UIHelper.dismiss(dialogFragment);

               

                 //显示提示用户遇到错误,需要重新加载的网页

               mWebView.loadUrl("file:///android_asset/error.html");

 

            }

        });

    }

 

    //返回键处理

    public boolean onKeyDown(int keyCode,KeyEvent event) {

        if ((keyCode == KeyEvent.KEYCODE_BACK)&&

mWebView.canGoBack()){

            mWebView.goBack(); //goBack()表示返回WebView的上一页面

 

            return true;

        }

 

        return super.onKeyDown(keyCode, event);

    }

 

publicvoid urlTask() {

        if(taskUrl.startsWith("tel:")) {

            //Android6.0系统需要动态申请权限

            if(EasyPermissions.hasPermissions(this,

Manifest.permission.CALL_PHONE)){

                // Have permission, do thething!

                Intent intent = newIntent(Intent.ACTION_VIEW,

Uri.parse(taskUrl));

                startActivity(intent);

            } else {

                // Ask for one permission

               EasyPermissions.requestPermissions(this,

getString(R.string.rationale_call_phone),

                        RC_TEL_PERM,

Manifest.permission.CALL_PHONE);

            }

        } else {

            Intent intent = newIntent(Intent.ACTION_VIEW,

Uri.parse(taskUrl));

            startActivity(intent);

        }

    }

0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:483098次
    • 积分:8961
    • 等级:
    • 排名:第2079名
    • 原创:310篇
    • 转载:756篇
    • 译文:0篇
    • 评论:17条
    最新评论