Android WebView的详解

Android WebView在android平台上是一个特殊的View, 他能用来显示网页,这个类可以被用来在你的app中仅仅显示一张在线的网页,还可以用来开发浏览器。
在Android手机中内置了一款高性能webkit内核浏览器,在SDK中封装为一个叫做WebView组件。WebKit是Mac OS X v10.3及以上版本所包含的软件框 架(对v10.2.7及以上版本也可通过软件更新获取)。 同时,WebKit也是Mac OS X的Safari网页浏览器的基础。WebKit是一个开源项目,主要由KDE的KHTML修改而来并且包含了一些来自苹果公司的一些组件。传统上,WebKit包含一个网页引擎WebCore和一个脚本引擎JavaScriptCore,它们分别对应的是KDE的KHTML和KJS。不过, 随着JavaScript引擎的独立性越来越强,现在WebKit和WebCore已经基本上混用不分(例如Google Chrome和Maxthon 3采用V8引擎,却仍然宣称自己是WebKit内核)。
在开发过程中应该注意几点:
1.AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误。
2.如果访问的页面中有javascript,则webview必须设置支持Javascript。
webview.getSettings().setJavaScriptEnabled(true);
3.如果页面中链接,如果希望点击链接继续在当前browser中响应,而不是新开Android的系统browser中响应该链接,必须覆盖 webview的WebViewClient对象
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
view.loadUrl(url);
return true;
}
}
);
4.如果不做任何处理,浏览网页,点击系统“Back”键,整个Browser会调用finish()而结束自身,如果希望浏览的网 页回退而不是推出浏览器,需要在当前Activity中处理并消费掉该Back事件。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
webView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
下一步让我们来了解一下android中webview是如何支持javascript自定义对象的,在w3c标准中js有 window,history,document等标准对象,同样我们可以在开发浏览器时自己定义我们的对象调用手机系统功能来处理,这样使用js就可以 为所欲为了。
<!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>WebView</title>
<script language="javascript">
<!--
function click() {
Android.onClick("hello");
}
-->
</script>
</head>
<body>
<a href="http://www.baidu.com" rel="external nofollow" onclick="click()">点击</a>
</body>
</html>
可以看到,HTML代码中的超链接响应一个点击事件,会执行javascript中的click()方法,因为通过webView.addJavascriptInterface()方法新建了一个对象,并将此对象和javascript对象绑定了,javascript对象的引用即为"Android",所以在HTML中的click方法执行时会调用新建的对象中的onClick()方法。这样就实现了在javascript代码中调用Java代码.
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Android
# WebView
# WebView使用方法
# WebView的实例
# Android 解决WebView无法上传文件的问题
# Android WebView自定义长按选择实现收藏/分享选中文本功能
# Android WebView 不支持 H5 input type="file" 解决方法
# Android 5.1 WebView内存泄漏问题及快速解决方法
# Android中解决WebView上下滑动监听问题
# Android WebView或手机浏览器打开连接问题解决办法总结
# Android webview使用方法总结
# 是一个
# 苹果公司
# 的是
# 而不是
# 还可以
# 让我们
# 而来
# 中有
# 也可
# 我们可以
# 希望能
# 为所欲为
# 可以看到
# 自定义
# 新开
# 几点
# 不做
# 他能
# 不分
# 将此
相关文章:
如何通过虚拟主机快速完成网站搭建?
建站之星北京办公室:智能建站系统与小程序生成方案解析
如何自定义建站之星模板颜色并下载新样式?
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
如何通过PHP快速构建高效问答网站功能?
如何在阿里云域名上完成建站全流程?
浅谈Javascript中的Label语句
常州企业网站制作公司,全国继续教育网怎么登录?
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
实例解析angularjs的filter过滤器
建站之星展会模版如何一键下载生成?
,想在网上投简历,哪几个网站比较好?
Python多线程使用规范_线程安全解析【教程】
制作营销网站公司,淘特是干什么用的?
香港服务器租用费用高吗?如何避免常见误区?
如何快速生成凡客建站的专业级图册?
网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何在阿里云虚拟服务器快速搭建网站?
C#怎么创建控制台应用 C# Console App项目创建方法
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
如何用wdcp快速搭建高效网站?
python的本地网站制作,如何创建本地站点?
如何在IIS中新建站点并解决端口绑定冲突?
如何在宝塔面板创建新站点?
开源网站制作软件,开源网站什么意思?
网站制作的步骤包括,正确网址格式怎么写?
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
实例解析Array和String方法
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
b2c电商网站制作流程,b2c水平综合的电商平台?
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
,sp开头的版面叫什么?
家具网站制作软件,家具厂怎么跑业务?
南京网站制作费用,南京远驱官方网站?
公司网站制作价格怎么算,公司办个官网需要多少钱?
建设网站制作价格,怎样建立自己的公司网站?
建站主机CVM配置优化、SEO策略与性能提升指南
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
如何用PHP快速搭建CMS系统?
宝塔建站无法访问?如何排查配置与端口问题?
打鱼网站制作软件,波克捕鱼官方号怎么注册?
枣阳网站制作,阳新火车站打的到仙岛湖多少钱?
建站之星安装需要哪些步骤及注意事项?
网站制作新手教程,新手建设一个网站需要注意些什么?
寿县云建站:智能SEO优化与多行业模板快速上线指南
Python lxml的etree和ElementTree有什么区别
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
*请认真填写需求信息,我们会在24小时内与您取得联系。