【问题标题】:How to transfer complex objects from Java to JS in Android WebView?如何在 Android WebView 中将复杂对象从 Java 传输到 JS?
【发布时间】:2015-04-21 15:14:27
【问题描述】:

IOS平台支持此类功能,Android不支持。

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

Using JavaScript From Objective-C

Calling Objective-C Methods From JavaScript

【问题讨论】:

  • 我认为您正在寻找的是向 WebView 添加一个 JavaScriptInterface,这允许您从 Java 代码中的 JavaScript 获取结果,并且您可以通过在 WebView 中加载脚本来将数据发送到 JavaScript .这有帮助吗? stackoverflow.com/questions/10472839/…
  • 你提到的这个Javascript接口只允许传输原始数据类型和字符串当然String可以用于JSON,但是对于复杂类型我也需要。

标签: java javascript android webview uiwebview


【解决方案1】:

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

Java:

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

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

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

JavaScript:

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

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

【讨论】:

  • 感谢您的回答。最好有一种方法来传输字节数组,至少不需要将它们转换为字符串。
  • 对不起,目前数组只能从 JS 传递到 Java,反之则不行。作为 JSON 字符串传递,然后在 JS 端使用 JSON.parse 解析它可能是将数组从 Java 传递到 JS 的最快方式。
猜你喜欢
  • 2014-03-28
  • 1970-01-01
  • 2018-02-27
  • 2015-09-18
  • 1970-01-01
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多