android WebView总结
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了android WebView总结,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4427字,纯文字阅读大概需要7分钟。
内容图文
浏览器控件是每一个开发环境都具备的,这为马甲神功提供了用武之地, windows 的有 webbrowser , android 和 ios 都有 webview 。仅仅是其引擎不同,相对于微软的 webbrowser , android 及 ios 的 webview 的引擎都是 webkit ,对 Html5 提供支持。本篇主要介绍 android 的 webview 之强大。
A.
webview
组件怎样使用
1)
加入权限:
AndroidManifest.xml
中必须使用许可
"android.permission.INTERNET",
否则会出
Web
page not available
错误。
2)
在要
Activity
中生成一个
WebView
组件:
WebView
webView = new WebView(this);
或者能够在
activity
的
layout
文件中加入
webview
控件:
< WebView
android:id = "@+id/wv"
3)
设置
WebView
基本信息:
假设訪问的页面中有
Javascript
,则
webview
必须设置支持
Javascript
。
webview.getSettings().setJavaScriptEnabled(true);
触摸焦点起作用
requestFocus();
取消滚动栏
this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);
4)
设置
WevView
要显示的网页:
互联网用:
webView.loadUrl("http://www.google.com");
本地文件用:
webView.loadUrl("file:///android_asset/XX.html");
本地文件存放在:
assets
文件里
5)
假设希望点击链接由自己处理,而不是新开
Android
的系统
browser
中响应该链接。给
WebView
加入一个事件监听对象(
WebViewClient)
并重写当中的一些方法:
shouldOverrideUrlLoading
:对网页中超链接button的响应。当按下某个连接时
WebViewClient
会调用这种方法,并传递參数:按下的
url
。比方当
webview
内嵌网页的某个数字被点击时,它会自己主动觉得这是一个电话请求,会传递
url
:
tel:123
,
假设你不希望如此可通过重写
shouldOverrideUrlLoading
函数解决:
public boolean shouldOverrideUrlLoading(WebView view,String url){ if(url.indexOf("tel:")<0){//页面上有数字会导致连接电话 view.loadUrl(url); } return true; }
1 ,接收到 Http 请求的事件
onReceivedHttpAuthReques
2
,打开链接前的事件
public boolean shouldOverrideUrlLoading
这个函数我们能够做非常多操作,比方我们读取到某些特殊的
URL
,于是就能够不打开地址,取消这个操作,进行预先定义的其它操作,这对一个程序是非常必要的。
3
,加载页面完毕的事件
public void onPageFinished(WebView view, String url){ }
相同道理,我们知道一个页面加载完毕,于是我们能够关闭
loading
条,切换程序动作。
4
,加载页面開始的事件
public void onPageStarted(WebView view, String url, Bitmap favicon) { }
这个事件就是開始加载页面调用的,通常我们能够在这设定一个
loading
的页面,告诉用户程序在等待网络响应。
通过这几个事件,我们能够非常轻松的控制程序操作,一边用着浏览器显示内容,一边监控着用户操作实现我们须要的各种显示方式,同一时候能够防止用户产生误操作。
6)
假设用
webview
点链接看了非常多页以后,假设不做不论什么处理,点击系统
“Back”
键,整个浏览器会调用
finish()
而结束自身,假设希望浏览的网页回退而不是退出浏览器,须要在当前
Activity
中处理并消费掉该
Back
事件。
覆盖
Activity
类的
onKeyDown(int
keyCoder,KeyEvent event)
方法。
public boolean onKeyDown(int keyCoder,KeyEvent event){ if(webView.canGoBack() && keyCoder == KeyEvent.KEYCODE_BACK){ webview.goBack(); //goBack()表示返回webView的上一页面 return true; } return false; }
B.
Webview
与
js
交互
Webview 与 js 的双向交互才是 android 的 webview 强大所在,也是马甲精神可以彻底运行的基础保障。
首先, webview 能够定义一个在其内嵌页面中能够触发的事件
wv.addJavascriptInterface(new DemoJavaScriptInterface(), "demo"); private final class DemoJavaScriptInterface { DemoJavaScriptInterface(){} public void clickonAndroid( final String order){ mHandler.post(newRunnable(){ @Override public void run(){ jsonText="{"name":""+order+""}"; wv.loadUrl("javascript:wave("+jsonText+")"); } }); } }
通过以上代码,就可以实如今其内嵌网页中触发 window.demo.clickOnAndroid(str) 事件并传參数 str 给 webview 。 Webview 接收到 str 之后,能够通过以上代码触发其内嵌页面中的 js 函数 wave(str) 。这样就能够实现网页触发 webview 的事件并传參数, webview 接收參数并调用 js 函数。
以下看我的 Html 脚本:
<! DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
< html >
< head >
< meta http-equiv = "Content-Type" content = "text/html; charset=UTF-8" >
< title > Insert title here </ title >
< script type = "text/javascript" src = "jquery.js" ></ script >
< script >
function toclient()
{
window.demo.clickonAndroid(order);
</ script >
</ head >
</ html >
通过脚本看到 wave ( str )函数是负责将原来传给 webview 的数据又一次拿回页面,效果图例如以下:
另外,假设你想获取页面的一些处理数据并交给 webview client处理,可在 wave 函数里将数据 alert ,然后 webview 中重写 WebChromeClient 的 onJsAlert 函数,详细代码例如以下
wv.setWebChromeClient(new MyWebChromeClient()); final class MyWebChromeClient extends WebChromeClient{ @Override public booleanonJsAlert(WebView view, String url, String message, final JsResult result) { //message就是wave函数里alert的字符串,这样你就能够在androidclient里对这个数据进行处理 result.confirm(); } return true; }
原文:http://www.cnblogs.com/lcchuguo/p/4019690.html
内容总结
以上是互联网集市为您收集整理的android WebView总结全部内容,希望文章能够帮你解决android WebView总结所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。