webview 远程js调用本地java实现交互怎么做?

JavaScript011

webview 远程js调用本地java实现交互怎么做?,第1张

可以,只要你是用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的函数