demo.html残缺示例

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>demo</title></head><body>    <div id="js_content"></div>    <button type="button" onclick="window.injectedObject.sayHello()">点击调用android代码</button>    <button type="button" onclick="window.injectedObject.sayHello('张三')">点击调用android代码并传递参数</button>    <script>        function androidCallJs() {            document.getElementById('js_content').innerHTML = 'hello tom';        }        // 带参数        function androidCallJsWithArgs(name) {            document.getElementById('js_content').innerHTML = `hello ${name}`;        }    </script></body></html>

一、android调用webview javascript

首先要启用javascript,默认是false

ws.setJavaScriptEnabled(true);

加载调用

webView.loadUrl("javascript:androidCallJs()"); // hello tom// 带参数webView.loadUrl("javascript:androidCallJsWithArgs('jack')"); // hello jack
如果要显示后调用,只需把代码放到 onPageFinished 生命周期里就能够了

二、webview javascript调用android

webView.addJavascriptInterface(new MyJavascriptInterface(this), "injectedObject");

MyJavascriptInterface.java局部代码

public class MyJavascriptInterface {    @JavascriptInterface    public void sayHello() {        Log.e("hello tom");    }    @JavascriptInterface    public void sayHello(String name) {        Log.e("hello" + name);    }        @JavascriptInterface    public void printImageSrc(String src) {        Log.e("src", src);    }}

三、加载完间接调用

webView.loadUrl(`javascript:(function() {    var images = document.images;    for(var i=0; i<images.length; i++) {        images[i].onclick = function() {            window.injectedObject.printImageSrc(this.src);        }       }})()`);
留神:下面用的是javascript模板字符串,次要是为了方面浏览,理论应用须要android代码拼装

欢送关注:https://www.fenxianglu.cn/

参考链接:

  • https://www.jianshu.com/p/97f...