gpt4 book ai didi

android - Worklight如何实现Native和Hybrid Applications的交互?

转载 作者:太空宇宙 更新时间:2023-11-03 12:53:23 25 4
gpt4 key购买 nike

我将从解释我尝试实现的用例开始。我有两个不同的应用程序:

  1. native android 应用程序,以及
  2. 基于 Worklight 的混合应用

用例从打开 native android 应用程序开始。在特定事件中,我打开带有一些参数的混合应用程序。

在混合应用程序中,我在 native 端获取传递的参数,现在我想在应用程序的 Web View (JavaScript、HTML)中使用该数据。我怎样才能做到这一点?

例如:
我打开了第一个 android 应用程序。其中有一个文本框和一个按钮。我在文本框中输入了我的手机号码,然后点击了按钮。在按钮上单击我有代码启动另一个混合应用程序并传递手机号码。

我能够在代码的 native 端提取该手机号码参数。如何将其传递给 Web (JavaScript) 部分?

任何帮助将不胜感激。

最佳答案

如果您使用的是 Worklight 6.2,则可以通过两种方式实现。

  1. 使用 Simple Data Sharing API
    使用此 API,我认为您甚至不需要尝试从 native View 获取数据并将其移回混合应用程序中的 WebView ,它只会在 WebView 中可用。

    在这个答案中解释概念和执行会显得太长;我建议先查看文档,看看它是否符合您的需求。

    但我建议:

  2. 使用 Action Sender API
    使用此 API,您可以轻松地将数据从 Web 移动到本地或从本地移动到 Web。

    在你的情况下,你说你在打开Hybrid应用程序后在 native 代码中已经有了数据,你只需要将它移动到webview,那么需要做的是:

不幸的是此时没有training module可用于具体演示此功能,但会有。

这是您需要做的事情的基本前提:

  • 在 JavaScript 中实现接收器:

    function wlCommonInit(){
    WL.App.addActionReceiver ("doSomething", actionReceiver);
    }

    function actionReceiver(received){
    // Do something with the received data.
    alert (received.data.someProperty);
    }
  • 在混合应用程序的主要 Java 类(或其他地方,取决于您的应用程序)中,您在 else 结束括号之后的 onInitWebFrameworkComplete 中实现以下内容:

    public void onInitWebFrameworkComplete(WLInitWebFrameworkResult result){
    ...
    ...
    else {
    handleWebFrameworkInitFailure(result);
    }

    JSONObject data = new JSONObject();
    try {
    data.put("someProperty", 12345);
    } catch (JSONException e) {
    // handle it...
    }
    WL.getInstance().sendActionToJS("doSomething", data);
    }

最终结果是,一旦您打开该应用,您就会收到一条显示“12345”的警告。

关于android - Worklight如何实现Native和Hybrid Applications的交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25698289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com