`
dalan_123
  • 浏览: 86959 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

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);
        }
在页面加载结束时调用。

 三、实现

public class BaseWebViewClient extends WebViewClient {
   @Override
public void onReceivedError(final WebView view, int errorCode,
               String description, String failingUrl) {
      super.onReceivedError(view, errorCode, description, failingUrl);
      String dataString = "error.html";
      view.loadDataWithBaseURL(failingUrl, dataString, "text/html", "UTF-8", "");
      Handler handler = new Handler(Looper.getMainLooper());
      handler.postDelayed(new Runnable() {
         @Override
public void run() {
            view.clearHistory();
         }
      }, 100);
   }
}
分享到:
评论

相关推荐

    Android 一个app启动另一个app

    在Android平台上,应用程序之间的交互是通过Intent机制实现的,这使得一个App能够启动另一个App,或者触发特定的操作。"Android 一个app启动另一个app"这个主题涉及到的核心知识点包括Intent的使用、Intent Filter的...

    android studio做的一个购物APP

    综上所述,"avatar-android-master"这个项目可能是一个使用Android Studio开发的购物APP示例,它展示了如何利用Android Studio的各种功能来构建一个完整的购物应用,涵盖了界面设计、数据库操作、网络通信、用户体验...

    Android传感器应用之摇一摇小球运动实现

    在Android平台上,传感器应用是移动开发的一个重要领域,它允许开发者创建各种有趣和实用的交互式功能。"摇一摇"动作就是一个常见的用户交互模式,常用于游戏、抽奖或者清理缓存等场景。本篇文章将深入探讨如何在...

    Android扫雷游戏(基于Android Studio)

    本项目"Android扫雷游戏"就是利用Android Studio进行开发的一个实例,旨在帮助初学者理解Android编程的基本概念和技术。扫雷游戏,作为一款经典的小游戏,它的实现过程涵盖了Android应用开发的多个核心知识点。 1. ...

    AndroidStudio集成Zxing实现扫一扫demo

    在Android开发中,"扫一扫"功能通常用于二维码和条形码扫描,这为用户提供了快速获取信息或执行操作的方式。Zxing(ZXing,意为“条形码阅读器”)是一个开源的、跨平台的二维码和条形码读取库。在Android Studio中...

    Android一键清理后台实现

    在Android平台上,开发一款“一键清理后台”应用可以帮助用户快速释放设备内存,提高系统运行速度。这个功能通常包括清理正在运行的应用程序、终止不必要的服务以及管理后台进程。下面将详细介绍如何在Android 4.4...

    Android串口通信(Android Studio)

    在Android开发中,串口通信(Serial Port Communication)是一种重要的技术,它允许设备之间通过串行接口进行数据交换。在Android Studio环境下实现串口通信,开发者可以构建与硬件设备交互的应用,例如读取传感器...

    Android高仿微信扫一扫

    在Android开发中,"微信扫一扫"是一个非常受欢迎的功能,它让用户可以快速扫描二维码或条形码,进行各种操作,如跳转网页、添加联系人、支付等。本项目旨在通过集成谷歌的ZXing(Zebra Crossing)库,来实现一个与...

    Android一个小闹钟例子

    以下将详细解析这个"Android一个小闹钟例子"所涵盖的技术点。 首先,我们需要理解Android的AlarmManager服务。AlarmManager是Android系统提供的一个用于安排周期性或者一次性任务的服务。在这个小闹钟例子中,...

    android抽屉菜单 android panel

    在Android应用开发中,抽屉菜单(Drawer Menu)是一种常见的设计模式,用于提供导航功能,让用户可以从屏幕边缘滑出一个包含多个选项的列表。这种设计通常遵循Material Design指南,是Google推荐的Android应用界面...

    Android自定义日期选择器源码

    我们可以使用Android的`GridView`或`RecyclerView`来实现这个视图,每个单元格代表一个月、一天或一小时。结合滚动事件和点击事件,我们可以让用户轻松地导航和选择。 博客文章“Android自定义日期选择器源码”可能...

    Android实现应用程序只启动一次引导界面(源码)

    在Android应用开发中,引导界面(也称为启动教程或新手引导)是一种常见的设计模式,用于初次启动应用时向用户介绍其主要功能和操作方式。本文将深入探讨如何在Android项目中实现一个应用程序只启动一次的引导界面,...

    Android.bp文件说明.pdf

    Android.bp 文件首先是 Android 系统的一种编译配置文件,是用来代替原来的 Android.mk 文件的。在 Android7.0 以前,Android 都是使用 make 来组织各模块的编译,对应的编译 配置文件就是 Android.mk。在 Android...

    JS调用Android方法,向Android方法传递json数据

    WebView是Android系统提供的一种组件,它能够加载并显示网页内容,就像是一个内置的浏览器。通过WebView,开发者可以在原生Android应用中嵌入HTML、CSS和JavaScript代码,从而构建混合式应用。 当需要在JavaScript...

    android 一个图片浏览器的实现。

    在Android开发中,创建一个图片浏览器是常见的需求,主要用于展示用户拍摄或选择的照片。这个"GalleryDemo"项目正是为了实现这样一个功能,它提供了一个类似系统自带的图片浏览体验,包括图片的缩放和平滑滑动。 一...

    android 以太网 添加设置Ethernet

    在Android系统中添加以太网(Ethernet)功能是一项涉及到网络接口和系统服务集成的重要操作。在Android设备上,以太网通常用于提供稳定的有线网络连接,尤其在没有Wi-Fi或者无线信号不稳定的情况下。以下是对如何在...

    Android点餐系统项目

    《Android点餐系统项目》是一门深度探讨如何在Android平台上构建无线点餐系统的视频教程,旨在教授学员如何利用Android技术实现一个完整的点餐系统,包括客户端和服务端的开发。这门课程涵盖了移动应用开发的多个...

    Android带有动画效果可弹出并收回的一组按钮菜单

    本教程将带你了解如何在Android Studio中实现一个带有动画效果的可弹出并收回的按钮菜单。这个功能不仅能够增加应用的交互性,还能为用户提供一种新颖的互动方式。 首先,我们需要设置一个基础的布局,通常是一个...

    Android设置虚线、圆角、渐变

    在Android开发中,为UI元素添加虚线、圆角和渐变效果是常见的需求,可以提升应用的视觉吸引力。下面将详细讲解如何实现这些效果。 ### 一、虚线(Dashed Line) 在Android中,我们可以使用`Shape Drawable`来创建...

    Android组件设计思想

    Android应用开发的哲学是把一切...这一节讲Android组件化设计的背景、理念、原则,以及Android在OS级别上提供的组件化支持,其中还会包含一个实验来验证这种组件化设计思想,可以对Android系统有一个高层次的抽象理解。

Global site tag (gtag.js) - Google Analytics