js调android方法失败,安卓开发学习之解决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注解的方法只有是公有的,才有效
結語
解決思路就如上所示,我是通過第三步解決的,坑了一天才完事。
總結
以上是生活随笔為你收集整理的js调android方法失败,安卓开发学习之解决JS不能调用Android方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第2讲:用例图(Use Case)
- 下一篇: 安科瑞数据机房智能母线槽技术分析-Sus