1.html代码
<script type="text/javascript"> function javacalljs(){ document.getElementById("content").innerHTML = "JAVA调用了JS的无参函数"; } function javacalljswith(arg){ document.getElementById("content").innerHTML = (arg); } </script> <input type="button" value="点击调用java代码" onclick="window.android1.jsCall()" /> <input type="button" value="点击调用java代码并传递参数" onclick="window.android1.jsCall('paramsvalue')" />
2.java代码
import android.app.Activity; import android.app.AlertDialog; import android.os.Bundle; import android.webkit.JavascriptInterface; import android.webkit.WebView; import android.widget.Toast; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; /** * Android 和 js 的互相调用 * 布局文件为 2个 button,一个WebView */ public class ActivityWebView extends Activity { @BindView(R.id.webView) WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ble); ButterKnife.bind(this); webView.loadUrl("http://192.168.61.104:8080/update/android_js.html"); webView.getSettings().setJavaScriptEnabled(true);// 启用javascript webView.addJavascriptInterface(this, "android1"); // android1 为html中的别名 } /** * 被js调用的函数 */ @JavascriptInterface public void jsCall() { runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(ActivityWebView.this, "无参数的方法被js调用", Toast.LENGTH_SHORT).show(); } }); } /** * 被js调用的函数 jsCall * jsCall这个为html中的函数名字 * 必须加上 @JavascriptInterface 这个注解 */ @JavascriptInterface public void jsCall(final String params) { runOnUiThread(new Runnable() { @Override public void run() { new AlertDialog.Builder(ActivityWebView.this).setMessage(params).show(); } }); } @OnClick(R.id.btn0) public void btn0() { webView.loadUrl("javascript:javacalljs()");// 调用无参的js: javacalljs 为js的函数名 } @OnClick(R.id.btn1) public void btn1() { String params = "params";// 调用有参的js: javacalljswith 为js的函数名,params 为参数值 webView.loadUrl("javascript:javacalljswith('" + params + "')"); } }
参考: http://blog.csdn.net/leejizhou/article/details/50894531/