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

原创 2016年08月28日 20:31:24

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);

        }

    }

版权声明:本文为博主原创文章,未经博主允许不得转载。

APP开发实战167-开机自启动的功能设计

30.15 开机自启动的功能设计 30.15.1 普通模式 对于Android7.0之前的系统,如果设计APP在系统启动之后自启动,只需在APP添加处理ACTION_BOOT_COMPLETED广...
  • xjbclz
  • xjbclz
  • 2017年04月30日 16:42
  • 5241

APP开发实战136-APP常用功能设计

36 APP常用功能设计 36.1启动页面设计 启动页面的图片设计成动态配置的,可以显示不同的广告。 当服务器更新了显示的图片后,APP下载并保存到本地,下次启动的时候显示新图片。 在启动APP的时候...
  • xjbclz
  • xjbclz
  • 2016年08月28日 15:54
  • 364

移动APP开发功能设计

移动端APP设计思路

软件系统功能设计(实战)训练(6个设计案例)

软件系统功能设计(实战)训练(6个设计案例)

游戏开发笔记(十)——移动功能设计

除了少数解谜类游戏,移动功能似乎已经成了当下游戏的一种居家旅行必备。简单移动功能类似贪吃蛇、俄罗斯方块、打砖块之类的游戏,移动可能仅仅意味着在代码里OnUpdate时改改坐标,在OnDraw时再画出来...
  • mooke
  • mooke
  • 2016年03月07日 20:34
  • 2400

开发人员系统功能设计常用办公软件分享

大多数开发人员随着经验的增长,会进入一个管理层的岗位(开发小组的组长,当然啦博主才毕业大半年,还不是开发组长,只是提前了解了一下分享给大家),需要负责软件系统的设计(系统功能设计和数据库设计)。然后将...

微信客户服务最难的不是功能设计和开发,而是对微信客户服务运营的理解

微信CRM不仅仅是系统,更是运营,因此你如何设计微信客户服务运营的流程和KPI?这个很关键。根据你的流程和KPI,微信CRM怎么来支撑?比如当前企业的微信主要指标是到达数量、打开率、转发分享率等,但是...

android SDK开发-- 功能设计

功能设计 先把app常用的功能进行抽象,主要从Activity Fragment Service等控件进行考虑。 其次完善相关的工具类。主要从代码封装、迭代、可维护性等方面考虑。 抽象 Activit...

以太网交换机诊断功能设计与开发

  • 2011年07月16日 14:01
  • 3.41MB
  • 下载

网站开发-php开发手机论坛(4)-功能设计及需求分析,功能结构模型

在开发论坛之前,我们先要做一下功能设计.然后才能按照功能sh
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:APP开发实战137-WebView功能设计
举报原因:
原因补充:

(最多只允许输入30个字)