当前位置:
首页
文章
前端
详情

android webview与原生交互

demo.html完整示例

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>demo</title>
</head>

<body>
    <div></div>

    <button type="button">点击调用android代码</button>
    <button type="button">点击调用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&lt;images.length; i++) {
        images[i].onclick = function() {
            window.injectedObject.printImageSrc(this.src);
        }   
    }
})()`);

注意:上面用的是javascript模板字符串,主要是为了方面阅读,实际使用需要android代码拼装

参考链接:

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

免责申明:本站发布的内容(图片、视频和文字)以转载和分享为主,文章观点不代表本站立场,如涉及侵权请联系站长邮箱:xbc-online@qq.com进行反馈,一经查实,将立刻删除涉嫌侵权内容。