一、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);
}
在页面加载结束时调用。 转自: http://blog.csdn.net/jackyhuangch/article/details/8310033 另外可以参考: http://stackoverflow.com/questions/2835556/whats-the-difference-between-setwebviewclient-vs-setwebchromeclient

更多相关文章

  1. Android(安卓)菜单详解
  2. 如何制作Jar包并在android中调用jar包
  3. Delphi处理Android的路径信息
  4. android android.bat批处理
  5. Android主流Router库对比(ARouter、ActivityRouter)
  6. android 锁屏界面处理
  7. Android热插拔事件处理流程--Vold
  8. Android(安卓)jni调用第三方so库和.h文件
  9. Java android ios 通用可逆des加密算法

随机推荐

  1. Android常用颜色大全
  2. 调用android系统自带功能
  3. Android进度条学习二
  4. Android之视频播放2
  5. Android(安卓)启动activity并且获取他的
  6. android 数据库工具类MyDbHelper
  7. android 2.3 开始主线程不能访问网络
  8. 关于android的des算法代码
  9. Android设置Dialog设置圆角
  10. Fragment传值到Fragment的操作步骤