android WebView, WebChromeClient和WebViewClient加载网页基本用法

原创 2013年09月18日 14:59:20
WebView, WebChromeClient和WebViewClient加载网页基本用法


 webview是android中的浏览器控件,在一些手机应用中常会用到b/s模式去开发应用,这时webview的强大功能就会显示出来。
 1、webview的几点设置
 
 权限设置:.AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误
 js开放设置: 如果访问的页面中有Javascript,则webview必须设置支持Javascript。webview.getSettings().setJavaScriptEnabled(true);  否则,页面的js将不会起作用.
滚动条设置:this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);
设置缓存模式:setCacheMode
要注意的是,其中的webView的一系列用法,比如 webView.getSettings().setJavaScriptEnabled(true);设置可以使用javscript; 
webView.getSettings().setJavaScriptEnabled(true);   
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);   
webView.setHorizontalScrollBarEnabled(false);   
webView.getSettings().setSupportZoom(true);   
webView.getSettings().setBuiltInZoomControls(true);   
webView.setInitialScale(70);   
webView.setHorizontalScrollbarOverlay(true);


2、在WebView的设计中,WebView主要完成解析、渲染界面。其他交给
(1)、事件监听对象(WebViewClient) 处理各种通知、请求事件的,具体来说包括:
事件监听对象WebViewClient中,主要有如下几个常用方法:
shouldOverrideUrlLoading:在web页面里单击链接的时候,会自动调用android自带的浏览器来打开链接,需要通过该方法在本页面打开;
@Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
onLoadResource:加载资源时响应
onPageStart:在加载页面时响应
onPageFinish:在加载页面结束时响应
onReceiveError:在加载出错时响应
onReceivedHttpAuthRequest:


(2)、WebChromeClient是辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等 
 onCloseWindow(关闭WebView) 
 onCreateWindow() 
 onJsAlert (WebView上alert是弹不出来东西的,需要定制你的WebChromeClient处理弹出) 
 onJsPrompt 
 onJsConfirm 
 onProgressChanged 
 onReceivedIcon 
 onReceivedTitle
3、返回处理
如果不做任何处理,浏览网页,点击系统“Back”键,整个Browser会调用finish()而结束自身,如果希望浏览的网 页回退而不是推出浏览器,需要在当前Activity中处理并消费掉该Back事件。
public boolean onKeyDown(int keyCode, KeyEvent event) {        
        if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {        
            mWebView.goBack();        
                   return true;        
        }        
        return super.onKeyDown(keyCode, event);        
    }
4、支持javascripte自定义对象
可以通过addJavascriptInterface()方法,添加js自定义对象,使用web页面与手机java程序能够进行通信交互。
5、DownloadListener接口
该接口里面有一个方法,onDownloadStart()下载侦听接口,如果客户代码实现该接口,则在下载开始、失败、挂起、完成等情况下,DownloadManagerCore对象会调用客户代码中实现的DownloadListener方法。
6、几个注意点
1)为了让WebView从apk文件中加载assets,Android SDK提供了一个schema,前缀为"file:///android_asset/"。WebView遇到这样的schema,就去当前包中的 assets目录中找内容。如上面的"file:///android_asset/demo.html" 
2)addJavascriptInterface方法中要绑定的Java对象及方法要运行另外的线程中,不能运行在构造他的线程中,这也是使用 Handler的目的(今天我是在没有在handler中处理,所以导致webviewclient中的onPageStart方法与addJavascriptInterface中的方法起了冲突,二个人的执行顺序时常互换,之后改成handlder实现,就解决其中的问题,正确的顺序是onPageStart在addJavascriptInterface中的handlder事件处理之前执行)。

如何让安卓WebView支持js调用window.open()和window.close()的方法。

最近项目中遇到一个webview开发时的问题,web前端开发人员在网页上实现了一个功能。功能是在A html页面,打开一个新的B html页面,然后再B页面中选择一个联系人,把值返回给A页面。做web...
  • u012912435
  • u012912435
  • 2016年05月23日 20:03
  • 4404

setwebviewclient()和setwebchromeclient()

整理一些在网上搜集的webview的两个方法的区别:setwebviewclient()和setwebchromeclient(),以备查阅。 原文网址:http://www.android100....
  • tingyalove
  • tingyalove
  • 2015年01月14日 14:52
  • 1667

关于android WebViewClient和WebChromeClient

一、Android之WebViewClient与WebChromeClient的区别 ANDROID应用开发的时候可能会用到WEBVIEW这个组件,使用过程中可能会接触到WEBVIEWC...
  • jackyhuangch
  • jackyhuangch
  • 2012年12月18日 00:36
  • 32873

WebView使用详解(二)——WebViewClient与常用事件监听

前言:生活的艰难,更会激发对梦想的渴望,但艰难的生活却往往会成为梦想的绊脚石上篇给大家简单讲了Webview中Native代码与JS相互调用的方法,这篇我们再讲讲有关各种拦截与处理的东东。一、WebV...
  • harvic880925
  • harvic880925
  • 2016年05月28日 11:24
  • 30117

WebViewClient各方法重写的作用

创建并设置一个WebViewClient子类,回调对应的方法改变网页内容的呈现方式,比如:网页加载错误回调onReceivedError(),提交表单错误回调onFormResubmission(),...
  • languobeibei
  • languobeibei
  • 2016年12月29日 16:03
  • 1365

使用WebView监控网页加载状况,PerformanceMonitor,WebViewClient生命周期

原文链接:http://www.cnblogs.com/s-xq/p/6700996.html 原理:WebView加载Url完成后,注入js脚本,脚本代码使用W3C的PerformanceTi...
  • xinruzhishui_11
  • xinruzhishui_11
  • 2017年04月26日 10:13
  • 483

《WebView使用详解(二)——WebViewClient与常用事件监听》

上篇给大家简单讲了Webview中Native代码与JS相互调用的方法,这篇我们再讲讲有关各种拦截与处理的东东。 一、WebViewClient 1、概述 前面我们虽然实现了交互,但可能我们会有...
  • mazhidong
  • mazhidong
  • 2017年04月03日 16:58
  • 721

学徒浅析Android开发:杂谈——WebView的url跳转时方法执行顺序

在实际项目开发中,我们用到WebView的场景,大多是在对接协议、第三方应用或网页时出现。对于页面加载,WebView没有自带等待效果。所以,需要我们去自定义各种带进度条的WebView,网上相关的例...
  • lz8362
  • lz8362
  • 2016年07月08日 23:07
  • 1939

WebView加载网页失败以后

在APP和网页交互时,很有可能出现加载失败的情况。 为了不让用户看到上述令人崩溃的默认失败页面,这里进行一下简单处理!...
  • guchuanhang
  • guchuanhang
  • 2016年09月12日 14:28
  • 5358

WebView使用详解——WebViewClient与常用事件监听

一、WebViewClient 1、概述 前面我们虽然实现了交互,但可能我们会有一个很简单的需求,就是在开始加载网页的时候显示进度条,加载结束以后隐藏进度条,这要怎么做?  这些简单的需求,...
  • Zzq_Big_Cow
  • Zzq_Big_Cow
  • 2017年07月04日 10:26
  • 327
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android WebView, WebChromeClient和WebViewClient加载网页基本用法
举报原因:
原因补充:

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