如何将复杂对象从Java 传输到Android WebView 中的JS?

How to transfer complex objects from Java to JS in Android WebView?

IOS平台支持这种功能,但Android不支持。

i-os UIWebView 支持的类型在以下 URL 中进行了描述

Using JavaScript From Objective-C

Calling Objective-C Methods From JavaScript

事实上,您可以 return 其他 Java 个对象,而不仅仅是来自注入对象方法的原始类型。考虑这个简化的例子:

Java:

class MyObject {
    class Transport {
        @JavascriptInterface
        public int getField() { ... }
    }

    @JavascriptInterface
    public Object getTransport() { return new Transport(); }
}

webView.addJavascriptInterface(new MyObject(), "myObject");

Java脚本:

{
    ...
    var transport = myObject.getTransport();
    return transport.getField();
}

Java 和 JavaScript 对象存在于不同的堆上,因此您无论如何都必须复制数据。