html文件javascript
<a>js中調用本地方法</a> html
<script> java
function fromjs(){ android
document.getElementById("show").innerHTML="I am from js"; ide
} this
var aTag = document.getElementsByTagName('a');編碼
aTag.addEventListener('click', function(){ htm
//調用android本地方法 對象
myJsObj.fromAndroid("android本地方法fromAndroid(String str)"); 接口
return false;
}, false);
</script>
<div id="show"> </div>
Android 中的java文件
//設置編碼
mWebView.getSettings().setDefaultTextEncodingName("utf-8");
//支持js
mWebView.getSettings().setJavaScriptEnabled(true);
//設置背景顏色 透明
mWebView.setBackgroundColor(Color.argb(0, 0, 0, 0));
//設置本地調用對象及其接口
mWebView.addJavascriptInterface(new JsObject(context), "myJsObj");
//載入js
mWebView.loadUrl("file:///android_asset/xxx.html");
//點擊調用js中方法
mBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mWebView.loadUrl("javascript:fromjs()");
Toast.makeText(context,"調用javascript:fromjs()", Toast.LENGTH_LONG).show();
}
});
public class JsObject {
Context mContext;
@JavascriptInterface //Android 4.2JS調用Java代碼的時候必須加上@JavascriptInterface才能調用。
public JavaScriptObject(Context mContxt) {
this.mContxt = mContxt;
}
public void fromAndroid(String str) {
Toast.makeText(mContext, str, Toast.LENGTH_LONG).show();
}
}
注: addEventListener中的第一個參數是事件名稱(不加on),第二個參數是調用方法,第三個參 數是useCapture, 一個bool類型。當爲false時爲冒泡獲取(由裏向外),true爲capture方式(由外向裏)。