一、Android之WebViewClient与WebChromeClient的区别
ANDROID应用开发的时候可能会用到WEBVIEW这个组件,使用过程中可能会接触到WEBVIEWCLIENT与WEBCHROMECLIENT,那么这两个类到底有什么不同呢?
WebViewClient主要帮助WebView处理各种通知、请求事件的,比如:
onLoadResource
onPageStart
onPageFinish
onReceiveError
onReceivedHttpAuthRequest
WebChromeClient主要辅助WebView处理Javascript的对话框、网站图标、网站title、加载进度等比如
onCloseWindow(关闭WebView)
onCreateWindow()
onJsAlert (WebView上alert无效,需要定制WebChromeClient处理弹出)
onJsPrompt
onJsConfirm
onProgressChanged
onReceivedIcon
onReceivedTitle
看上去他们有很多不同,实际使用的话,如果你的WebView只是用来处理一些html的页面内容,只用WebViewClient就行了,如果需要更丰富的处理效果,比如JS、进度条等,就要用到WebChromeClient。
更多的时候,你可以这样
WebView webView;
webView= (WebView) findViewById(R.id.webview);
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClient());
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(url);
这样你的WebView理论上就能有大部分需要实现的特色了
当然,有些更精彩的内容还是需要你自己添加的
二、WebViewClient的方法说明
1、public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
在点击请求的是链接是才会调用,重写此方法返回true表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边。
2、public void onReceivedSslError(WebView view, SslErrorHandler handler, android.net.http.SslError error) {
handler.proceed();
}
重写此方法可以让webview处理https请求。
3、public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) {
return super.shouldOverrideKeyEvent(view, event);
}
}
重写此方法才能够处理在浏览器中的按键事件。
4、 public void onLoadResource(WebView view, String url) {
// TODO Auto-generated method stub
if (DEBUG) {
Log.d(TAG, " onLoadResource ");
}
super.onLoadResource(view, url);
}
在加载页面资源时会调用,每一个资源(比如图片)的加载都会调用一次。
5、 public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
if (DEBUG) {
Log.d(TAG, " onPageStarted ");
}
if (url.endsWith(".apk")) {
download(url);//下载处理
}
super.onPageStarted(view, url, favicon);
}
在页面加载开始时调用。
6、public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
if (DEBUG) {
Log.d(TAG, " onPageFinished ");
}
super.onPageFinished(view, url);
}
在页面加载结束时调用。
view.loadUrl(url);
return true;
}
在点击请求的是链接是才会调用,重写此方法返回true表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边。
2、public void onReceivedSslError(WebView view, SslErrorHandler handler, android.net.http.SslError error) {
handler.proceed();
}
重写此方法可以让webview处理https请求。
3、public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) {
return super.shouldOverrideKeyEvent(view, event);
}
}
重写此方法才能够处理在浏览器中的按键事件。
4、 public void onLoadResource(WebView view, String url) {
// TODO Auto-generated method stub
if (DEBUG) {
Log.d(TAG, " onLoadResource ");
}
super.onLoadResource(view, url);
}
在加载页面资源时会调用,每一个资源(比如图片)的加载都会调用一次。
5、 public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
if (DEBUG) {
Log.d(TAG, " onPageStarted ");
}
if (url.endsWith(".apk")) {
download(url);//下载处理
}
super.onPageStarted(view, url, favicon);
}
在页面加载开始时调用。
6、public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
if (DEBUG) {
Log.d(TAG, " onPageFinished ");
}
super.onPageFinished(view, url);
}
在页面加载结束时调用。
相关推荐
总结来说,WebViewClient和WebChromeClient在Android WebView的使用中扮演着不可或缺的角色。理解它们各自的职责和用法,有助于我们更好地控制网页的加载过程,实现与网页内容的交互,从而提升应用的整体质量。
为了更好地控制WebView的行为以及与之交互,Android提供了两个关键的类:`WebViewClient`和`WebChromeClient`。这两个类虽然都是用于辅助WebView的工作,但它们各自的功能和应用场景有所不同。 #### WebViewClient ...
1. WebViewClient与WebChromeClient:为了监听H5页面的加载事件,我们可以自定义WebViewClient和WebChromeClient。它们分别处理网页加载开始、完成、错误等事件,还可以实现弹窗、进度条等功能。 2. postMessage与...
1、WebViewClient就是帮助WebView处理各种通知、请求事件的,具体来说包括:onLoadResource 、onPageStart 、onPageFinish 、onReceiveError 、onReceivedHttpAuthRequest 2、WebChromeClient是辅助WebView处理...
- 示例应用源码中,`Android WebViewJS应用源码`可能包含了一个简单的Android项目,展示了如何在Activity中创建WebView,配置WebSettings,设置WebViewClient和WebChromeClient,以及实现JavaScript与Java的交互。...
4. **WebViewClient和WebChromeClient**:为了实现更复杂的交互,比如拦截链接、处理弹出窗口或进度条显示,通常会自定义WebViewClient和WebChromeClient。这两个类提供了许多回调方法,可以覆盖以实现特定行为。 5...
这份源码提供了关于WebView的详细学习资料,非常适合Android开发者进行参考和学习。 首先,WebView是Android SDK中的一个视图类,继承自`android.webkit.WebView`。它的主要功能是加载和显示HTML、XML或其他Web内容...
创建Webview的基本步骤包括初始化Webview、设置WebViewClient和WebChromeClient、加载网页URL。例如: ```java WebView webView = new WebView(this); setContentView(webView); webView.setWebViewClient(new ...
2. 页面加载逻辑:深入理解WebViewClient和WebChromeClient的回调函数,如onPageStarted、onPageFinished、onReceivedError等,以及如何处理页面的加载状态和错误。 3. JavaScript交互:分析如何通过...
可以通过设置WebViewClient和WebChromeClient来监听页面加载状态和处理JavaScript对话框。 2. **设置JavaScript接口**:使用`addJavascriptInterface`方法,将一个Java对象暴露给JavaScript。这个对象上的方法会被...
1. **WebView的配置与使用**:研究如何初始化WebView,设置WebViewClient和WebChromeClient,以及如何加载URL和执行JavaScript。 2. **网络请求与响应处理**:分析网络请求的发起、数据解析和错误处理流程,了解如何...
而对于页面加载的监控,`WebViewClient`和`WebChromeClient`则必不可少。 总结来说,Android与JavaScript的交互涉及多方面的技术和策略,开发者需要根据实际需求选择合适的方法,并注意安全性。理解这些交互方式的...
WebView是Android SDK中的一个类,它继承自View,并且实现了WebViewClient和WebChromeClient接口,使得我们可以对网页加载过程进行控制和定制。 1. **WebView基本使用** - 初始化:在XML布局文件中添加WebView元素...
1. 封装原生 webview,使用 WebViewClient 与 WebChromeClient 2. H5 调用 Native 采用 js prompt 方式 3. Native 调用 H5 采用 loadurl API 使用说明: errorview 和 loadingview 可以自定义 对 WebView 设置...
为了使两者之间能进行通信,Android提供了WebViewClient和WebChromeClient两个类,它们提供了接口供开发者处理加载页面的过程以及与JavaScript交互。 1. **WebViewClient**:主要处理页面的加载事件,如...
为了实现更高级的功能,如拦截加载请求或处理JavaScript与Java之间的交互,我们需要设置WebViewClient和WebChromeClient: ```java webView.setWebViewClient(new WebViewClient() { @Override public void ...
WebView是Android SDK中的一个类,它继承自View,并且实现了WebViewClient和WebChromeClient接口。它的主要功能是加载HTML、CSS、JavaScript等网络资源,为用户提供一种在原生应用内嵌入网页的解决方案。以下是一些...
总结来说,Android与JavaScript的交互是通过WebView组件实现的,结合WebViewClient和WebChromeClient可以定制网页加载和交互行为。JavaScriptInterface和evaluateJavascript()是主要的交互手段,分别适用于需要持久...
- "Webviewpro"可能是项目的主模块,包含了Android工程的所有组成部分,如MainActivity(包含WebView的布局)、WebView配置、JavaScriptInterface类、以及可能的自定义WebChromeClient和WebViewClient。 8. **调试...