日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

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

發布時間:2023/12/31 Android 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。