可以,只要你是用webview打开的,那么不管事远程还是本地,都可以通过webview与app的本地java代码进行交互。没有任何区别。
1、webview必须设置支持Javascript
mWebview.getSettings().setJavaScriptEnabled(true)2、加进一个回调的代理类JavaScriptInterface,并给它一个调用的名称:ncp
mWebView.addJavascriptInterface(new JavaScriptInterface(), "ncp")final class JavaScriptInterface {
public int callOnJs() {
return 1000
}
public void callOnJs2(String mode) {
//TODO
}
}
3、JS页面
<script type="text/javascript">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")
}
</script>
接下来就可以调用js方法了,
1、Java调用js方法
mWebView.loadUrl("javascript:onSaveCallback()")2、JS访问java方法
window.ncp.callOnJs2("click")js不能直接调用java代码。可以通过页面提交后台的方式,间接调用后台的服务java代码。
也可以通过ajax的方式,调用后台的服务java代码。
两种方式稍有差别,不过都是前后台的通信交互。
思路1、java端建立servlet服务,js通过ajax等方式调用servlet
2、可以通过dwr等第三方方式集成,然后调用java方法
3、用jsp,使用<%%>的方式进行脚本执行
举例
var a= "<%=Test.buttonTest()%>"//Test就是java类,buttonTest就是java的函数