在Android开发中,越来越多的用到了Android原生与HTML的混合开发模式,那么相应的会产生很多Android原生代码与WebView进行相互交流的需求。比如点击WebView中的一个按钮调用打电话功能(JS调用原生代码),比如点击原生的按钮,调用JS部分代码(原生调用JS),以及两者之间的传值。
首先是JS调用原生代码:
Android端代码:
webview添加JavaScript接口
webView.getSettings().setJavaScriptEnabled(true); webView.addJavascriptInterface(ZhaiTangDetails.this,"android");重写需要被调用的方法
@JavascriptInterface public void startFunction(final String id){ runOnUiThread(new Runnable() { @Override public void run() { Intent intent = new Intent(ZhaiTangDetails.this,CommentDetails.class); intent.putExtra("id",id); startActivity(intent); } }); }
网页端代码:
<input type="button" value="点击调用java代码并传递参数" οnclick="window.android.startFunction('0X001')" />
其次谈谈原生调用JS代码:
这就非常简单了
Android端代码:
webView.loadUrl("javascript:javacalljs()");
网页端代码:
function javacalljs(){ document.getElementById("content").innerHTML = "<br\>JAVA调用了JS的无参函数"; }
以上都可以用到方法的重载,加入参数进行数据传递
function javacalljs(){
document.getElementById(
"content"
).innerHTML =
"<br\>JAVA调用了JS的无参函数"
;}