`
iame
  • 浏览: 131690 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

WebView再探

阅读更多

WebView初探 了解到WebView的强大,。听说WebView对Javascript的支持也很强,想从网上找些例子,还很难找,最终从google老家找了一个Java和Javascript互调的例子 ,当时看了,下巴“咣当”就掉在地上了,太强了!这样也行?
整个Eclipse ADT工程例子中都有,这里重点分析一下代码:

public class WebViewDemo extends Activity {
	private WebView mWebView;
	private Handler mHandler = new Handler();

	public void onCreate(Bundle icicle) {
		super.onCreate(icicle);
		setContentView(R.layout.webviewdemo);
		mWebView = (WebView) findViewById(R.id.webview);
		WebSettings webSettings = mWebView.getSettings();
		webSettings.setJavaScriptEnabled(true);
		mWebView.addJavascriptInterface(new Object() {
			public void clickOnAndroid() {
				mHandler.post(new Runnable() {
					public void run() {
						mWebView.loadUrl("javascript:wave()");
					}
				});
			}
		}, "demo");
		mWebView.loadUrl("file:///android_asset/demo.html");
	}
}

这里的重点是addJavascriptInterface(Object obj,String interfaceName)方法,该方法将一个java对象绑定到一个javascript对象中,javascript对象名就是interfaceName,作用域是Global。这样初始化webview后,在webview加载的页面中就可以直接通过javascript:window.demo访问到绑定的java对象了。来看看在html中是怎样调用的:

<html>
        <script language="javascript">
                function wave() {
                    document.getElementById("droid").src="android_waving.png";
                }
        </script>
        <body>
            <a onClick="window.demo.clickOnAndroid()">
                                <img id="droid" src="android_normal.png"/><br>
                                Click me!
            </a>
        </body>
</html>

 这样在javascript中就可以调用java对象的clickOnAndroid()方法了,wave()方法是java中调用javascript的例子。

这里还有几个知识点:

1)为了让WebView从apk文件中加载assets,Android SDK提供了一个schema,前缀为"file:///android_asset/"。WebView遇到这样的schema,就去当前包中的assets目录中找内容。如上面的"file:///android_asset/demo.html"

2)addJavascriptInterface方法中要绑定的Java对象及方法要运行另外的线程中,不能运行在构造他的线程中,这也是使用Handler的目的。

分享到:
评论
8 楼 wjb_forward 2010-04-07  
那这样就可以在绑定的java里面定义多个方法,供js调用,这个确实强大啊
7 楼 kitcheng 2010-03-26  
javascript能调用java,这个一早就知道了,今天再仔细看看你的文章,突然发现还能java调javascript里面的函数,这个解决了我一个大问题。
6 楼 yafeng 2010-03-19  
我正在尝试用在andriod上做报表出来。饼图,折线图,柱状图等等。

大体的想法就是webview封装html 5+ javascript。已经做出了饼图和折线图。不过使用的javascript是网上现成的绘图库。

这种方法的好处是javascript具有移植性。问题是我不确定性能上是不是可接受,再一个视觉感受上不是特别棒。正准备借一个手机试试。
5 楼 lordhong 2009-05-14  
kryptonum 写道
Twidroid的作者说过他使用了Webview(因为性能上好过Listview)
应该就是这么实现的吧

噢?  那要研究一下了, 有时候做layout做死人了...
4 楼 kryptonum 2009-05-14  
Twidroid的作者说过他使用了Webview(因为性能上好过Listview)
应该就是这么实现的吧
3 楼 lordhong 2009-04-30  
用JS做bridge调用native functions其实在iPhone上也实现过了.
WindowsMobile上用Gears也可以多少调用一些功能, Camera的支持在开发中.
2 楼 iame 2009-04-29  
我惊讶的是WebView如此无缝地打通了Java和Javascript的调用。如果打通了这两者的关系,利用Java开启摄像头扫描barcode,再图像识别出barcode应该是常规的应用了,不会惊掉我的下巴地~~
1 楼 lordhong 2009-04-29  
等你看了如何在WebView通过JS调用barcode扫描程序的话... 下巴就要掉N下了...

Android很好很强大

相关推荐

    WebView2-20200512- WebView2Loader.dll.zip

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

    crosswalk-webview比webview更好用

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

    Android WebView 去除标题

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

    Android Webview滑动监听

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

    android webview 版本69.0

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

    webview 监听页面显示事件

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页内容。通过WebView,我们可以展示HTML、CSS和JavaScript等Web技术构建的页面,同时也可以与原生应用进行交互。本文将深入探讨如何...

    微信小程序-小程序与webview交互-Webview.rar

    在某些场景下,我们可能需要在小程序中嵌入网页内容,这就是Webview的功能所在。Webview是微信小程序中用于加载H5页面的一个组件,它可以让小程序具备更丰富的交互体验和功能扩展。 小程序与Webview的交互是实现...

    Android webview加载网页.zip

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序内部加载和显示网页内容,无需跳转到外部浏览器。这个“Android webview加载网页.zip”文件可能包含了一个示例项目或者教程,帮助开发者理解...

    Android实现WebView懒加载

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中嵌入网页内容,实现类似浏览器的功能。然而,对于大型或者资源丰富的网页,WebView的加载性能可能会成为用户体验的一个瓶颈。"Android实现...

    WebView加载失败错误处理

    在Android应用开发中,WebView是一个非常重要的组件,它允许开发者在应用程序内嵌入网页内容,实现类似浏览器的功能。然而,在实际使用中,由于网络问题、页面不存在或编码错误等原因,WebView可能会加载失败。这时...

    Android webview 内存泄露的解决方法

    Android webview 内存泄露的解决方法 最近在activity嵌套webview显示大量图文发现APP内存一直在涨,没法释放内存,查了很多资料,大概是webview的一个BUG,引用了activity导致内存泄漏,所以就尝试传递...

    Android WebView获取源码

    本文将详细介绍如何在Android中使用`WebView`来获取网页的源码,并封装成一个自定义的`ArthurWebView`组件。 首先,我们了解`WebView`的基本用法。`WebView`继承自`View`,主要通过以下步骤进行初始化: 1. 在布局...

    uniapp 使用webView通讯

    uniapp 使用webView通讯

    WPF简要制作浏览器 WPF中使用WebView2控件 WPF 应用中的 WebView2 WPF集成WebView2 完整例子

    WPF简要制作浏览器 WPF中使用WebView2控件 WPF 应用中的 WebView2 WPF集成WebView2 完整例子及Demo c#使用WebView2例子

    Android 基于x5Webview 浏览文件 office文档

    X5WebView是腾讯QQ浏览器团队开源的一个高性能、跨平台的WebView组件,它基于Chromium内核,为Android开发者提供了更强大的网页渲染和交互能力。在"Android 基于x5Webview 浏览文件 office文档"的场景中,我们将探讨...

    Android通过WEBVIEW调用HTTPS

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页内容,实现与网页的交互。当涉及到安全的网络通信时,HTTPS协议因其数据加密和身份验证特性成为首选。本文将深入探讨如何在Android...

    webview显示图片并下载

    在Android开发中,Webview是一个非常重要的组件,它允许我们加载和展示网页内容,同时还能与JavaScript进行交互。本文将详细讲解如何在Webview中显示图片以及实现图片的下载功能。 1. **Webview基本使用** 首先,...

    android webview播放网页视频

    在Android开发中,Webview是一个非常重要的组件,它允许我们加载和展示网页内容。当涉及到在Webview中播放网页视频时,这个问题可能会变得稍微复杂,因为Android原生的Webview并不总是支持所有现代HTML5视频特性。...

    android WebView预加载

    但如果跳转之后再加载,会看到webview有一个加载的过程,如果网页较大可能加载起来会很慢。这时我们利用启动页或引导页或中间的广告页的时间来预加载webview,利用View.gone,View.visible来实现控件类的隐藏与显示,...

Global site tag (gtag.js) - Google Analytics