3分鐘入門 Java Js 相互調(diào)用

初始化WebView。

        mWebView = root.findViewById(R.id.web_view);
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.addJavascriptInterface(new JsBridge(), "javaObjectA");

JsBridge.java
被JavaScript調(diào)用的方法要加上@JavascriptInterface

    public class JsBridge {
        @JavascriptInterface
        public void javaMethod(int value) {
            System.out.println("java method: " + value);
        }
    }

Java調(diào)用JavaScript

Java代碼

    mWebView.loadUrl("javascript:window.javaObjectA.javaMethod(100);");

JavaScript調(diào)用Java

JavaScript代碼

    window.javaObjectA.javaMethod(100);

WebView方法說明

WebView.addJavascriptInterface解釋

    /**
     * Injects the supplied Java object into this WebView. The object is
     * injected into the JavaScript context of the main frame, using the
     * supplied name. This allows the Java object's methods to be
     * accessed from JavaScript.
     * @param object the Java object to inject into this WebView's JavaScript
     *               context. Null values are ignored.
     * @param name the name used to expose the object in JavaScript
     */
    public void addJavascriptInterface(Object object, String name) {
        checkThread();
        mProvider.addJavascriptInterface(object, name);
    }

addJavascriptInterface(Object object, String name)
第一個參數(shù)是被注入到WebView中的java對象,JavaScript可以操作該對象有@JavascriptInterfacepublic方法。
第二個參數(shù)是java 類暴露給JavaScript的名字。mWebView.addJavascriptInterface(new JsBridge(), "javaObjectA");將new 出來的JsBridge對象注入到了WebView中,并命名為了JavaObjectA。JavaScript可以通過window.javaObjectA.javaMethod(100);調(diào)用該java對象的javaMethod()方法。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容