版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
今天早上测试JS调用Android方法,各种改改改大半个小时才找到问题原因,在此记录一下,希望能帮助到你。
一.xml布局
<WebView
android:id="@+id/wv_baseWebView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
二.js中的方法
function addHeaderRefresh() {
if(IOS) {
window.webkit.messageHandlers.addHeaderRefresh.postMessage({});
} else if (ANDROID) {
window.messageHandlers.addHeaderRefresh();
}
}
三.activity中
当时就是忘记写 mBinding.wvBaseWebView.addJavascriptInterface(this, "messageHandlers");
mBinding.wvBaseWebView.getSettings().setJavaScriptEnabled(true);//支持JS,必写
//JS调用Android方法,messageHandlers看js中Android时window.messageHandlers.方法名(),方法名对应后面的addHeaderRefresh
mBinding.wvBaseWebView.addJavascriptInterface(this, "messageHandlers");
mBinding.wvBaseWebView.clearCache(true);//清除缓存
@JavascriptInterface
public void addHeaderRefresh() {//JS中调用Android这个方法,一定要有@JavascriptInterface
L.e("webview", "addHeaderRefresh");
}