java 暴漏 一个对象给 webview

2024-06-18  本文已影响0人  苍老师的眼泪

引入注释类,后面用来声明一些方法

import android.webkit.JavascriptInterface;

定义一个java对象,这个对象传递给webview, 就可以在网页里面调用该对象的方法了

    public class WebAppInterface {
        Context mContext;

        WebAppInterface(Context context) {
            mContext = context;
        }

        @JavascriptInterface    // 必须要声明所有的方法
        public void exit_app() {
            finish();
        }
    }

webview需要实例化该对象,第二个参数是定义对象在webview里面的变量名

        webView.addJavascriptInterface(new WebAppInterface(this), "my_android_object");

在webview里面使用该对象:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
    

    <button onclick="clicked()">test</button>

    <script>
        
        function clicked() {
            if(typeof my_android_object !== "undefined" && my_android_object !== null) {
                try {
                    my_android_object.exit_app();
                } catch (e) {
                    alert(JSON.stringify(e))
                }
            } else {
                alert("没找到定义的java对象");
            }
        }


    </script>
</body>
</html>
上一篇下一篇

猜你喜欢

热点阅读