编程语言
首页 > 编程语言> > android – 如何在Worklight中实现Native和Hybrid应用程序之间的交互?

android – 如何在Worklight中实现Native和Hybrid应用程序之间的交互?

作者:互联网

我将首先解释我试图实现的用例.我有两个不同的应用程序:

>原生Android应用程序,和
>基于Worklight的混合应用程序

用例从打开本机android应用程序开始.在特定事件中,我使用一些参数打开Hybrid应用程序.

在Hybrid应用程序中,我在本机端获取传递的参数,现在我想在应用程序的webview中使用该数据(JavaScript,HTML).我怎样才能做到这一点?

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

我能够在代码的本机端提取该移动数字参数.如何将其传递给Web(JavaScript)部分?

任何帮助将不胜感激.

解决方法:

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

>使用Simple Data Sharing API
使用此API,我认为您甚至不需要尝试从本机视图中获取数据并将其移回到混合应用程序中的webview,它将在webview中可用.

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

但我建议:
>使用Action Sender API
使用此API,您可以轻松地将数据从Web移动到本机或本机到Web.

在您的情况下,您说在打开混合应用程序后您已经拥有本机代码中的数据,并且您只需要将其移动到webview,因此需要的是:

> Add a sender在本机代码中
> Add a receiver在JavaScript代码中

不幸的是,目前没有training module专门用于演示此功能,但会有.

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

>在JavaScript中,您实现了一个接收器:

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

function actionReceiver(received){
    // Do something with the received data.
    alert (received.data.someProperty);
}

>在Hybrid应用程序的主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”的警报.

标签:ibm-mobilefirst,android
来源: https://codeday.me/bug/20190830/1768641.html