Android:MobileFirst 将数据从 Native 发送到跨页面

Posted

技术标签:

【中文标题】Android:MobileFirst 将数据从 Native 发送到跨页面【英文标题】:Android: MobileFirst sending data from Native to cross page 【发布时间】:2015-07-10 02:37:43 【问题描述】:

我的任务如下:使用 IBM MobileFirst 创建一个 Hybrid 应用程序并实现一个 JS 计算器。显示从本地 Java API 检索到的日期到网页。

我的尝试:

    我按照文档here 实现了整个Native 代码的onCreate 方法

    我发现this 回答“第一个”说明我应该在 onInitWebFrameworkComplete 上使用它,

    提供的解决方案无效 我正在使用 MobileFirst 版本 7 完整的示例代码是provided

建议:我应该在本机代码中创建整个操作栏,然后将其合并到交叉 ui 中,可以吗?我只需要发送一小串日期

【问题讨论】:

【参考方案1】:

我不清楚你的尝试,所以这里快速演示如何单击 html 中的按钮并触发 Send Action API 以获取 Java 中的当前日期并将其返回给 javascript,然后显示。

index.html

<button onclick="getDateFromJava();">show current date from Java</button>

ma​​in.js

function wlCommonInit()
    WL.App.addActionReceiver ("returneDdateFromJava", returnedDateFromJava);


function getDateFromJava() 
    WL.App.sendActionToNative("retrieveDate");


function returnedDateFromJava(received)
    if (received.action === "returnedDateFromJava") 
        alert (JSON.stringify(received));
    

主 Java 类文件

    查找onInitWebFrameworkComplete

    else之后添加ActionReceiver

    import com.worklight.androidgap.api.WLActionReceiver;
    ...
    ...
    
    public void onInitWebFrameworkComplete(WLInitWebFrameworkResult result)
        if (result.getStatusCode() == WLInitWebFrameworkResult.SUCCESS) 
            super.loadUrl(WL.getInstance().getMainHtmlFilePath());
         else 
            handleWebFrameworkInitFailure(result);
        
    
        ActionReceiver ActionReceiver = new ActionReceiver();
        WL.getInstance().addActionReceiver(ActionReceiver);
    
    

ActionReceiver 类

package com.getDateApp;

import java.util.Date;
import org.json.JSONException;
import org.json.JSONObject;
import com.worklight.androidgap.api.WL;
import com.worklight.androidgap.api.WLActionReceiver;

public class ActionReceiver implements WLActionReceiver
    public void onActionReceived(String action, JSONObject data)
        if (action.equals("retrieveDate"))
            Date date = new Date();

            JSONObject returnedDate = new JSONObject();
            try 
                returnedDate.put("dateFromJava", date);
             catch (JSONException e) 
                e.printStackTrace();
            
            WL.getInstance().sendActionToJS("returnedDateFromJava", returnedDate);
        
    

【讨论】:

以上是关于Android:MobileFirst 将数据从 Native 发送到跨页面的主要内容,如果未能解决你的问题,请参考以下文章

android 模拟器在 mobilefirst 上的 shouldStartProvisioning 错误

要在 Android 上显示的自定义广播接收器块通知 - IBM mobilefirst

从 WL6.3 迁移后,Android 中的 IBM MobileFirst 7.1 服务器连接失败

将 Android 环境添加到 IBM MobileFirst Shell 组件

无法连接到 MobileFirst 7.1 服务器

在 IBM MobileFirst android 中使用自签名证书的问题