在Android上怎样实现JAVA和JS交互

JavaScript037

在Android上怎样实现JAVA和JS交互,第1张

Java代码mWebview.getSettings().setJavas criptEnabled(true)

然后是设置webview要加载的网页:

web的网页:webView.loadUrl("xxx")

本地的网页:webView.loadUrl("file:///android_asset/XX.html")//本地的存放在:assets文件夹中

webview做完基本的初始化后我们还要要给它,加进一个回调的代理类Javas criptInterface,并给它一个调用的名称:ncp

Java代码

mWebView.addJavas criptInterface(new Javas criptInterface(),"ncp")

Javas criptInterface可以是一个普通的Java类,类实现的方法,均可被js回调:

Java代码

final class Javas criptInterface {

public int callOnJs() {

return 1000

}

public void callOnJs2(String mode) {

//TODO

}

}

Java要调用js的方法,只需知道js的方法名称即可:

Java代码

mWebView.loadUrl("javas cript:onSaveCallback()")

js 这边就更简单:

Js代码

window.onload = function(){

document.getElementById('btn_1').addEventListener('click', onBtnClick, false)

var _int_value = window.ncp.callOnJs()

alert("get int from java:" + _int_value )

}

function onBtnClick() {

window.ncp.callOnJs2("click")

}

理论上java获得所有请求都是通过servlet,但是现在很多框架进行了封装,建议使用框架,可以轻松的实现,比如DWR就可以用js在页面调用java代码,还能传递参数,获得返回值,原理就是它对ajax异步请求做了相应的封装。

js获得java的代码可以直接通过<%=%>这种方式获取。

DWR原理介绍:

dwr框架是服务器端的ajax框架,那么最基础的还是XMLHttpRequest,我们在服务器端的dwr.xml文件中配置好后,dwr框架会把根据配置内容生成相应的js文件,在这个js文件里,它提供了访问服务器端的请求。可以想象,这js文件中有使用XMLHttpRequest请求服务器。其可以使用这样一种方式来处理:使用XMLHttpRequest去访问一个jsp文件,在这个jsp文件中,会使用<%java语句%>来访问在dwr.xml文件定义要访问的方法。并且将返回结果格式化为xml形式发送回给客户端。在客户端,我们使用XMLHttpRequest的reponseXML去接收这个xml(当然是在XMLHttpRequest的onreadystatechange事件指定的方法中接受),然后使用XML DOM对象来解析这个xml文件,生成一个对象或数组。然后,把生成的对象或数组传给要处理的回调函数,使用HTML DOM显示页面动态效果。