Android 4.2之后 JS调用webview里面的Java程序需要添加注解 @JavascriptInterface
首先在webview里面搭建后台代码片段:
webSettings = mWebView.getSettings();
// 设置mwebview属性,能够执行Javascript脚本
mWebView.getSettings().setJavaScriptEnabled(true);
// 添加JS调用接口
mWebView.addJavascriptInterface(new JsMethodObject(), "finishWebView_Android");
这里面的JsMethodObject是新创建的一个内部类,可以把JS调用的方法写在里面,"finishWebView_Android"是新创建的
JsMethodObject对象的别名,供前台JS调用的时候用。
下面是JsMethodObjec的定义(webview的内部类):
<pre name="code" class="java">private class JsMethodObject {
@JavascriptInterface
public void closeActivity() {
mHandler.post(new Runnable() {
public void run() {
//appView.loadUrl("javascript:wave()");
WebActivity.this.finish();
}
});
}
}
需要注意的是:1、Android4.2之后必须添加@JavascriptInterface注解
2、closeActivity这个必须为public,才能供JS调用
然后是jsp中的代码片段,在这个里面需要添加一个jsp后退回webview的按钮:
<a href="#" id="finishwebview" class="ui-btn ui-icon-back ui-btn-icon-notext ui-corner-all"></a>
这里面用的前台框架是JQuery Mobile
然后在JS里面为这个按钮添加调用本地Java程序的功能:
$("#finishwebview").bind("click", function(){
window.finishWebView_Android.closeActivity();
});