android应用webview时js接口不能用的问题

我们使用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")注释就可以了,祝你们成功!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值