ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-08-30 14:24:45  阅读:225  来源: 互联网

标签:ibm-mobilefirst android


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

>原生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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有