我们使用webview与js接口交互时,通常是通过页面里定义好的指定函数名来获取数据,例如:
// js调用android
webView.addJavascriptInterface(new JsInterface(), "android");
public class JsInterface {
JsInterface() {
}
/**
* 关闭按钮
*/
public void closeButton() {
UserDeclare.visitloginView = true;
finish();
}
}
其中,"android"与closeButton这两个就是与页面交互有关的参数。
html代码:
<script type="text/javascript">
function closeButton()
{
android.closeButton();
}
</script>
// android调用js
webView.loadUrl("javascript:lotteryStart()");
html代码:
<script type="text/javascript">
function lotteryStart()
{
alert("lotteryStart");
}
</script>
</script></script>html代码:html代码:html代码:
但是,不是所有的系统在任何时候都可以交互成功的,比如4.2这个坑爹的系统,如果你当前项目的android:targetSdkVersion="17" (最大支持系统的配置)
这种情况下与js接口交互就会失败,网上说很多如果设置17的话就在函数上或者类上加入@SuppressLint( "@JavascriptInterface")这这样的注释,其实都
不管用(本人亲自试验了)。
结论:把 targetSdkVersion设置到17以下,也就是小于等于16,然后在webView.addJavascriptInterface(new JsInterface(), "android");含有这句代码的函数上
加入@SuppressLint( "@JavascriptInterface")注释就可以了,祝你们成功!