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

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

我的尝试:

  1. 我按照文档here 实现了整个Native 代码的onCreate 方法
  2. 我发现this 回答“第一个”说明我应该在 onInitWebFrameworkComplete 上使用它,

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

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

【问题讨论】:

    标签: android ibm-mobilefirst jsonobject


    【解决方案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 类文件

    1. 查找onInitWebFrameworkComplete
    2. 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);
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-16
      • 1970-01-01
      • 2021-01-01
      • 2021-09-20
      • 1970-01-01
      • 2011-07-11
      • 2020-10-20
      • 2020-09-08
      相关资源
      最近更新 更多