很多情况下,我们开发人员可能需要网页调用android代码,像调用方法一样,既能传入参数,有能得到返回值。
鉴于此种情况,特写此实现步骤供大家参考。
1、需要将webview控件的支持js的属性设置为true:
mWebView.getSettings().setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClient());
2、在android代码中添加js接口方法供js调用:
//对象名demo,其方法名为testMethod,
//方法的形参有两个str1和str2,
//方法的返回值类型为String类型
webView.addJavascriptInterface(new Object() {
@SuppressLint("JavascriptInterface")
public String testMethod(final String str1,final String str2) {
String rtnStr;
rtnStr = str1+str2;
//to-do
return rtnStr;
}
}, "demo");
3、html页面中通过JS来调用上面的方法,将控件中的值以形参传入,并将上面方法返回的值写入控件中。
js调用上面的方法的代码为:var rtnValue=demo.testMethod(形参1,形参2);
html页面代码如下:
js交互androidfunction postStr(){
var rtn = demo.adrdMethod(document.getElementById("text").value, document.getElementById("text1").value);
document.getElementById("text2").value=rtn;
}
将此html取名为jsAndroid.html,并放到Android项目的assets目录下。
4、以上html可以通过下面这行代码加载到webView中打开:
webView.loadUrl("file:///android_asset/jsAndroid.html");