在android4.4之前的版本,native调用webview中的js方法只需要使用一个webView.loadUrl("javascript:method()");就可以实现了。
在android4.4之后,此方法失效,官方提供了新的API来代替此方法:例
<span style="white-space:pre"> </span>webView.evaluateJavascript("method()", new ValueCallback<String>() {
@Override
public void onReceiveValue(String arg0) {
// TODO Auto-generated method stub
}
});
如果将这段代码直接替换过去,大家会发现还是没有能够成功调用js方法,原因是因为此方法是一个异步的方法,我们可以使用一个Handler,在Handler里面执行这段方法;当然,这个方法在4.4之前的版本调用会报错,所以为了适配不同版本,我们需要对当前设备的SDK版本做个判断,例:
<span style="white-space:pre"> </span>Build.VERSION.SDK
这段代码就可以成功的获取到当前的SDK版本,判断下>=19的就需要调用
evaluateJavascript,否则还可以调用webView.loadUrl("');
列举下历史android系统对应的SDK:
API 1 -> android1.0
API 2 -> android1.1
API 3 -> android1.5(Cupcake)
API 4 -> android1.6(Donut)
API 5 -> android2.0(Eclair)
API 6 -> android2.0.1(Eclair)
API 7 -> android2.1(Eclair)
API 8 -> android2.2(Froyo)
API 9 -> android2.3(Gingerbread)
API 10 -> android2.3.3(Gingerbread)
API 11 -> android3.0(Honeycomb)
API 12 -> android3.1(Honeycomb)
API 13 -> android3.2(Honeycomb)
API 14 -> android4.0(IceCreamSandwich)
API 15 -> android4.0.3(IceCreamSandwich)
API 16 -> android4.1(Jelly Bean)
API 17 -> android4.2(Jelly Bean)
API 18 -> android4.3(Jelly Bean)
API 19 -> android4.4(KitKat)
API 20 -> android4.4(KitKat Wear)
API 21 -> android4.X.(L Preview)