Webview javascript 调用java方法

场景:Android的Webview中,javascript怎么调用java方法

Android的Webview中,javascript如何调用java方法

PS:另外推荐下面这篇文章《用注解和pojo支撑起来的轻量级REST框架--T2

http://blog.****.net/nanjingjiangbiao/article/details/7680702

 

今天调查一个线上Bug,发现是WebView中的一小段javascript,会直接调用到后台APK的一个Java事件,最后导致java中nullpointexception。

感兴趣的是,WebView中的javascript如何调用APK中的java方法。

 

一个例子:

        通过JS取得Android的GPS数据

 

第一步,WebKit的准备

首先,给与WebKit的javascript的执行许可

 


然后,塞入自己的javascript拦截器


第二步,定义自己的javascript拦截器

 


第三步,定义一个可运行的html

在这个代码里面,可以用roid.gps的方法调用第二步定义的java函数

 

最后,全部的代码


未完

我还想知道为什么,在webview里面定义一个JSObject,就可以连接javascript和后台函数

他们之间是如何通信的?

 我稍微调查了一下WebView的底层代码,webview初期化的时候


生成了显示用对象

mBrowserFrame

 

而此对象的所有操作事件,都会被

mEventHub截获

而mEventHub会将请求发送给真正需要处理的MessageStub。 通过messageName


所以你要问我他们是怎么通信的

我只能说是线程间通信。

 

#以上#


 

1楼xiaofufu113小时前
谢谢分享。