html文件
<a>js中调用本地方法</a>
<script>
function fromjs(){
document.getElementById("show").innerHTML="I am from js";
}
var aTag = document.getElementsByTagName('a');
aTag.addEventListener('click', function(){
//调用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方式(由外向里)。
来源:oschina
链接:https://my.oschina.net/u/2483853/blog/596773