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

WebView学习小记

阅读更多

最近有个项目需要用到第三方身份验证,进行用户登录,考虑到同时兼容多个第三方平台(如网易,新浪,腾讯等)的验证,而且要达到最大可能的跨平台(同时支持网页端和手机端),最终确定采取使用网页方式进行第三方的身份验证,以便于在线维护升级。

 

既然是在线系统,手机端就是访问该网点就是了。Android上提供了强大的WebView控件,利用这一工具,我们可以拦截各种由后台发起的页面跳转,也可以响应页面的JS脚本操作等等。以下是记录了一些,在项目过程中,遇到的问题的解决记录。

 

1、重定向URL的拦截:

 

我们首先了解一下类android.webkit.WebViewClient,WebViewClient是管理WebView加载URL指定页面的周期管理类,下面都是其加载的周期函数,通过继承并重载android.webkit.WebViewClient的两个方法shouldOverrideUrlLoading和onPageStarted,就可以实现拦截指定的重定向URL。

 

//begin load url at here	
public void onPageStarted(WebView view, String url, Bitmap favicon) { 
       
		if (url.startsWith(BindURL)) {
			Result result = parseTargetURL(url);
			handleResult(result);
			return;
		}
	}

//redirect when page loading, go here
public boolean shouldOverrideUrlLoading(WebView view, String url) { 

		if (url.startsWith(BindURL)) {
			Result result = parseTargetURL(url);
			handleResult(result);
			return true;
		}
		return super.shouldOverrideUrlLoading(view, url);
	}
// when load complete , go here
public void onPageFinished(WebView view, String url) {     
		handler.sendEmptyMessage(App.WebPageLoadOver);
	}

//load page fail, go here
public void onReceivedError(WebView view, int errorCode,    
			String description, String failingUrl) {
		handler.sendEmptyMessage(App.WebPageLoadError);
		super.onReceivedError(view, errorCode, description, failingUrl);
	}
 

2、响应页面的JS弹窗

 

要在WebView上响应JS脚本,必须地要有以下的设置代码,

 

WebSettings setting = webview.getSettings();   
setting.setJavaScriptCanOpenWindowsAutomatically(true); 
setting.setJavaScriptEnabled(true);

 

然后得响应其弹窗请求,js代码:Alert.show("这是弹窗..."); 但是我们响应的弹窗十一什么的形式弹出来的?最方便的,当然就是用AlertDialog来装载js弹窗的内容了。ok,剩下要做的,就是拦截js的请求了。

 

这里我们有android.webkit.WebChromeClient,和WebViewClient管理加载URL不同,WebChromeClient是用来管理相关资源的,js也就是页面的资源之一了。

 

WebChromeClient也提供了相当丰富健全的回调API,可是在这里,我只有响应JS弹窗的需求,具体见下面的实例,下面一段时重载WebChromeClient的方法:

 

@Override  //call when javascript request a popup window
public boolean onJsAlert(WebView view, String url, String message,   
					final JsResult result) {
				new AlertDialog.Builder(ThirdPartyAuthActivity.this)
						.setTitle("网页说:")
						.setMessage(message)
						.setPositiveButton(android.R.string.ok,
								new DialogInterface.OnClickListener() {

									public void onClick(DialogInterface dialog,
											int which) {
										dialog.dismiss();
										result.confirm();
                                          //tell js, we handle it's request    
									}
								}).create().show();
				return true;
			}
		});

最后不要忘了把重载的WebChromeClient实例设置到view.setWebChromeClient(new WebChromeClient() {.........});

 

 

3、实现网页后退

 

习惯上网冲浪的人,对网页的后退肯定熟悉得不得了,可是在webview上怎么去实现呢?简单呗,之间按Back键就是了,结果一按,整个装载webview的Activity的退出去了,简单分析,就是返回的动作没有被webview监听到,反而通知到了Activity,那Activity当然也返回上一页了。OK,那思路就简单了,webview主动去监听Back键的动作:

 

webview.setOnKeyListener(new View.OnKeyListener() {  

@Override  
public boolean onKey(View v, int keyCode, KeyEvent event) {  
	                if (event.getAction() == KeyEvent.ACTION_DOWN) {  
	                    if (keyCode == KeyEvent.KEYCODE_BACK && 
                          webview.canGoBack()) {  //表示按返回键时的操作
	                        webview.goBack();   //后退  
	                        return true;    //已处理  
	                    }  
	                }  
	                return false;  
	            }  
	        });
 

 

 

分享到:
评论

相关推荐

    webview学习demo

    "webview学习demo"是一个专为iOS开发者设计的学习资源,它涵盖了如何在iOS应用中使用WebView以及如何实现iOS与JavaScript之间的双向通信。这个示例项目经过测试,可以免费直接运行,对于理解WebView的使用具有很高的...

    androidWebView学习小结

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页内容,实现与网页的交互。WebView基于Webkit渲染引擎,这使得它在性能和兼容性上与Safari和Chrome等浏览器保持一致。在本文中,我们...

    android webview学习记录

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页内容,实现与网页的交互。本文将深入探讨WebView的相关知识点,包括它的基本使用、设置、以及与JavaScript的交互。 首先,使用...

    webview学习常用demo

    这个“webview学习常用demo”提供了一个基础的学习平台,帮助初学者理解并掌握WebView的用法。以下是对这个demo的详细解析: 1. **WebView基本使用** - `WebView` 类是Android SDK提供的一个组件,它能加载和显示...

    超好的webview学习资料

    ### 超好的webview学习资料 #### 概述 本篇内容主要针对初学者介绍WebView的基本使用及其与JavaScript和Android平台之间的交互机制。通过详细解释WebView的基本配置、权限设置、事件监听、JavaScript支持等内容,...

    超好的WEBVIEW学习资料

    ### WEBVIEW学习资料详解 #### 一、简介与准备工作 在移动应用开发中,尤其是在Android平台上,`WebView`是一个非常重要的组件,它允许开发者在原生应用中展示和交互HTML内容。这对于集成网页功能或者利用现有Web...

    webview学习记录.rar

    WebView的学习是每个Android开发者必经之路,尤其是在需要混合开发或者嵌入H5页面时。下面我们将深入探讨WebView的基础知识、高级用法以及优化策略。 1. **基础使用** - **初始化WebView**: 在布局文件中添加...

    android webview 学习资料

    WebView的学习对于Android开发者来说是必不可少的。以下是对WebView相关知识点的详细阐述: 1. **WebView基本使用**:WebView是Android SDK中的一个类,通过继承自ViewGroup,可以展示HTML、CSS和JavaScript等Web...

    androidWebView学习.pdf

    在Android开发中,WebView是一个非常重要的组件,它允许开发者在应用内部展示网页内容,无需跳转到外部浏览器。WebView基于WebKit渲染引擎,与Safari和Chrome相同,因此它能提供高质量的网页渲染效果。在本文中,...

    WebView2-20200512- WebView2Loader.dll.zip

    【WebView2Loader.dll详解】 WebView2 是微软推出的一款现代Web技术框架,用于在桌面应用程序中嵌入Web内容。它基于Chromium项目,提供了与最新Web标准兼容的浏览器内核,使得开发者可以在桌面应用中轻松集成网页...

    crosswalk-webview比webview更好用

    在移动应用开发中,Webview是一个关键组件,它允许开发者在原生应用程序内嵌入网页内容。Android系统自带的WebView是Android应用中常用的一种方式,但随着时间的推移,开发者们发现了一些限制,比如性能问题、版本...

    Android应用源码之38.WebView控件学习.zip

    这份源码提供了关于WebView的详细学习资料,非常适合Android开发者进行参考和学习。 首先,WebView是Android SDK中的一个视图类,继承自`android.webkit.WebView`。它的主要功能是加载和显示HTML、XML或其他Web内容...

    webview学习记录

    这份“webview学习记录”文档,很可能是对Android WebView组件的深入探讨,包括其基本用法、常见问题及其解决方案的总结。 一、WebView的基本使用 1. 添加依赖:在AndroidManifest.xml文件中,我们需要添加WebView...

    webView2学习笔记

    在本学习笔记中,我们将深入探讨WebView2的关键特性和应用场景,以及如何有效地在你的应用程序中集成和使用它。 1. **WebView2概述** - WebView2是Microsoft Edge Chromium的嵌入式版本,提供了一种在桌面应用中...

    Android WebView 去除标题

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中加载和显示网页内容。有时候,我们可能希望去除WebView中的标题部分,以实现更自定义化的界面设计。本篇文章将详细探讨如何在Android的...

    Android Webview滑动监听

    在Android开发中,Webview是一个非常重要的组件,它允许开发者在原生应用中嵌入网页内容,实现网页与原生应用的交互。本篇将详细讲解如何在Android Webview中实现滑动监听以及图片的放大缩小功能。 首先,我们要...

    Android webview加载网页.zip

    通过学习和实践这些知识点,开发者可以创建出一个功能完善的WebView应用,让用户在不离开应用的情况下浏览网页,提升用户体验。对于“8.webview加载网页”这个文件,可能是具体实现这些功能的代码示例,进一步深入...

    android webview 版本69.0

    在Android平台上,WebView是一个至关重要的组件,它允许开发者在应用程序中嵌入网页浏览功能,而无需启动完整的浏览器应用。在给定的标题“android webview 版本69.0”中,提到的是一个特定版本的WebView,即69.0。...

    使用webview做的浏览器~android基础学习

    本篇文章将深入探讨如何使用WebView来构建一个简单的浏览器,并结合Android基础知识进行学习。 首先,我们需要理解WebView的基本概念。WebView是Android SDK中的一个类,它能够加载并显示网页内容,支持HTML、CSS和...

Global site tag (gtag.js) - Google Analytics