当前位置:   article > 正文

js调android方法失败,安卓开发学习之解决JS不能调用Android方法

android release版本js无法调起android中的方法

背景

这两天在做划词搜索时,需要让前端的js调用后端的Android方法,但总是调不成,经过搜索,问题解决,现记录成文。

解决方案

1、确定调用了webView.addJavascriptInterface()方法并且webView支持js

webView支持js是前提,设置方法:webView.getSettings().setJavascriptEnabled(true)

webView.addJavascriptInterface(object, string)方法用来给webview的网页绑定安卓端的对象。object就是安卓端的对象,string是这个对象在前端的名字

2、确定要调用的方法加了@JavascriptInterface注解,而且访问修饰符是public

如果js要调安卓端的某个方法,必须在安卓端的这个方法前加上@JavascriptInterface注解,而且,如果targetSdkVersion >= 17的话,还要加上@SuppressLint("JavascriptInterface")注解,而且要保证这些方法是公有的

3、考虑代码混淆

如果项目用了代码混淆,则要在项目的proguard-project.txt文件里声明下面几句话,保证混淆时@JavascriptInterface注解不被去掉

-keepattributes *JavascriptInterface*

-keep class com.example.szc.TextSelectionHelper

-keep class com.example.szc.TextSelectionHelper {public *;}

第一行表示保留JavascriptInterface注解

第二行是保持TextSelectionHelper类,因为我是在这个类里使用JavascriptInterface注解的

第三行表示保持这个类里所有公有字段,因为使用JavascriptInterface注解的方法只有是公有的,才有效

结语

解决思路就如上所示,我是通过第三步解决的,坑了一天才完事。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/561949
推荐阅读
相关标签
  

闽ICP备14008679号