WebView组件学习以及WebViewClient 的方法解释

在Android手机中内置了一款高性能webkit内核浏览器,在SDK中封装为一个叫做WebView组件。利用WebView组件就可以做出款完全属于自己的手机浏览器,就想在windows上用IE内核做一个浏览器一样!

1.因为是浏览器,访问网络是必须的。所以,AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误。

2.设置浏览器是否运行网页上的javascript代码

WebSettings webSetting = webview.getSettings();

webSetting.setJavaScriptEnabled(true);

3.默认情况下,点击webview中的链接,会使用Android系统自带的浏览器打开这个链接。如果希望点击链接继续在我们自己的Browser中响应,必须覆盖 webview的WebViewClient对象:

mWebView.setWebViewClient(new WebViewClient(){

public boolean shouldOverrideUrlLoading(WebView view, String url) {

view.loadUrl(url);

return true;

}

});

4.默认的,点击系统“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);

}

对于 Android 2.0 开始又多出了一种新的方法,对于 Activity  可以单独获取 Back 键的按下事件,直接重

写onBackPressed  方法即可,代码如下

@Override

public void onBackPressed() {

//  这里处理逻辑代码,该方法仅适用于 2.0 或更高版本的 sdk

return ;

}

5.如果webView中需要用户手动输入用户名、密码或其他,则webview必须设置支持获取手势焦点。方法如下:

webview.requestFocusFromTouch();

6.WebView加载界面主要调用三个方法:LoadUrl、LoadData、LoadDataWithBaseURL.

1、LoadUrl 直接加载网页、图片并显示.(本地或是网络上的网页、图片、gif)

2、LoadData 显示文字与图片内容 (模拟器1.5、1.6)

3、LoadDataWithBase  显示文字与图片内容(支持多个模拟器版本)

7.WebSettings 的常用方法介绍

1 setJavaScriptEnabled(true);
//支持js脚步

2  setPluginsEnabled(true);
//支持插件 目前新版本已不支持

3  setUseWideViewPort(false);
//将图片调整到适合webview的大小

4  setSupportZoom(true);
//支持缩放

5  setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
//支持内容重新布局

6  supportMultipleWindows();
//多窗口

7  setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
//关闭webview中缓存

8  setAllowFileAccess(true);
//设置可以访问文件

9  setNeedInitialFocus(true);
//当webview调用requestFocus时为webview设置节点

10 setBuiltInZoomControls(true);
//设置支持缩放

11  setJavaScriptCanOpenWindowsAutomatically(true);
//支持通过JS打开新窗口

12  setLoadsImagesAutomatically(true);
//支持自动加载图片

8.WebViewClient 的方法总结

doUpdateVisitedHistory(WebView view, String url, boolean isReload) (更新历史记录)

onFormResubmission(WebView view, Message dontResend, Message resend) (应用程序重新请求网页数据)

onLoadResource(WebView view, String url) 在加载页面资源时会调用,每一个资源(比如图片)的加载都会调用一次。

onPageStarted(WebView view, String url, Bitmap favicon) 这个事件就是开始载入页面调用的,通常我们可以在这设定一个loading的页面,告诉用户程序在等待网络响应。

onPageFinished(WebView view, String url) 在页面加载结束时调用。同样道理,我们知道一个页面载入完成,于是我们可以关闭loading 条,切换程序动作。

onReceivedError(WebView view, int errorCode, String description, String failingUrl)(报告错误信息)

onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm)(获取返回信息授权请求)

onReceivedSslError(WebView view, SslErrorHandler handler, SslError error)重写此方法可以让webview处理https请求。

onScaleChanged(WebView view, float oldScale, float newScale)(WebView发生改变时调用)

onUnhandledKeyEvent(WebView view, KeyEvent event)(Key事件未被加载时调用)

shouldOverrideKeyEvent(WebView view, KeyEvent event)重写此方法才能够处理在浏览器中的按键事件。

shouldOverrideUrlLoading(WebView view, String url)

在点击请求的是链接是才会调用,重写此方法返回true表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边。这个函数我们可以做很多操作,比如我们读取到某些特殊的URL,于是就可以不打开地址,取消这个操作,进行预先定义的其他操作,这对一个程序是非常必要的。

关于android 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);

}

在页面加载结束时调用。

时间: 2024-10-24 20:25:51

WebView组件学习以及WebViewClient 的方法解释的相关文章

关于android 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

【React Native开发】React Native控件之WebView组件详解以及实例使用(22)

转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/50676379 本文出自:[江清清的博客] (一)前言 [好消息]个人网站已经上线运行,后面博客以及技术干货等精彩文章会同步更新,请大家关注收藏:http://www.lcode.org 今天我们一起来看一下WebView组件讲解以及使用实例 刚创建的React Native技术交流群(282693535),欢迎各位大牛,React Native技术爱好者加入交流!同

Android 4.2版本以下使用WebView组件addJavascriptInterface方法存在JS漏洞

JS注入漏洞存在的Android版本:Android < 4.2 综述:Android的SDK中提供了一个WebView组件,用于在应用中嵌入一个浏览器来进行网页浏览.WebView组件中的addJavascriptInterface方法用于实现本地Java和JavaScript的交互.这个方法可以通过js脚本在本地执行任意Java代码,从而以当前用户身份执行任意命令. 尽管Android官方已经提醒了此功能在访问不可信网页内容时存在严重安全风险,很多应用开发人员仍未意识到此问题,大量Andro

[ExtJS学习笔记]第七节 Extjs的组件components及其模板事件方法学习

本文地址:http://blog.csdn.net/sushengmiyan/article/details/38487519 本文作者:sushengmiyan -------------------------------------------------------------资源链接----------------------------------------------------------------------- 翻译来源  Sencha Cmd官方网站: http://ww

【Flutter学习】基本组件之Webview组件

1.添加依赖 dependencies: flutter_webview_plugin: ^0.2.1+2 2.导入库 import 'import 'package:flutter_webview_plugin/flutter_webview_plugin.dart'; //导入前需要配置 3.属性 const WebviewScaffold({ Key key, this.appBar, @required this.url, this.headers,// this.withJavascr

安卓开发复习笔记——WebView组件

我们专业方向本是JAVA Web,这学期突然来了个手机App开发的课设,对于安卓这块,之前自学过一段时间,有些东西太久没用已经淡忘了 准备随笔记录些复习笔记,也当做温故知新吧~ 1.什么是WebView? WebView(网络视图)能加载显示网页,可以将其视为一个浏览器,它使用了WebKit渲染引擎加载显示网页. 废话不多说,直接上代码 1.需要在xml布局文件中声明WebView组件 1 <WebView 2 android:id="@+id/webview" 3 androi

android WebView组件使用总结

浏览器控件是每个开发环境都具备的,这为马甲神功提供了用武之地,windows的有webbrowser,android和ios都有webview.只是其引擎不同,相对于微软的webbrowser,android及ios的webview的引擎都是webkit,对Html5提供支持.本篇主要介绍android的webview之强大. webview组件如何使用 1)添加权限:AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会

react-native WebView 返回处理 (非回调方法可解决)

1.前言 项目中有些页面内容是变更比较频繁的,这些页面我们会考虑用网页来解决. 在RN项目中提供一个公用的Web页,如果是网页内容,就跳转到这个界面展示. 此时会有一个问题是,网页会有一级页面,二级页面,这就会设计到导航栏返回键的处理(以及在Android上返回键的处理). 这个问题,在RN官网就可找到解决方式.就是用onNavigationStateChange这个回调方法记录当前的导航状态,从而判断是返回上一级页面还是退出这个网页,回到App的其他界面. 但是,当网页的实现是React时,就

Android组件学习之ExpandableListView

一个简单的小例子: 可以展开的ListView,和Listview差不多,只是设置的Adapter不同.常用的Adapter有BaseExpandableListAdapter.SimpleExpandableListAdapter.SimpleCursorTreeAdapter 布局如下:(布局中我设置了android:groupIndicator,不知道为什么不起作用.另外,android:dividerHeight这个属性是组对象和子节点共用的.如果要定义比较复杂的组视图及子节点视图,还是