Android: MobileFirst 从 Native 发送数据到跨页
Android: MobileFirst sending data from Native to cross page
我的任务如下:使用 IBM MobileFirst 创建一个混合应用程序并实现一个 JS 计算器。显示从本机 java API 检索到网页的日期。
我的尝试:
- 我遵循了文档 here 并实现了整个本机代码 onCreate 方法
我发现 this 答案"the first one" 说明我应该在 onInitWebFrameworkComplete 上使用它,
- 提供的解决方案无效
- 我正在使用 MobileFirst 版本 7
- 完整的示例代码是 provided
建议:我应该用本机代码创建整个操作栏,然后将其合并到交叉 ui 中吗?我只需要发送一小串日期
我不清楚你的尝试,所以这里有一个快速演示如何单击 HTML 中的按钮并触发发送操作 API 以获取 Java 中的当前日期] 和 return 它到 Java 脚本,然后显示它。
index.html
<button onclick="getDateFromJava();">show current date from Java</button>
main.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));
}
}
主要Javaclass文件
- 查找
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 class
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);
}
}
}
我的任务如下:使用 IBM MobileFirst 创建一个混合应用程序并实现一个 JS 计算器。显示从本机 java API 检索到网页的日期。
我的尝试:
- 我遵循了文档 here 并实现了整个本机代码 onCreate 方法
我发现 this 答案"the first one" 说明我应该在 onInitWebFrameworkComplete 上使用它,
- 提供的解决方案无效
- 我正在使用 MobileFirst 版本 7
- 完整的示例代码是 provided
建议:我应该用本机代码创建整个操作栏,然后将其合并到交叉 ui 中吗?我只需要发送一小串日期
我不清楚你的尝试,所以这里有一个快速演示如何单击 HTML 中的按钮并触发发送操作 API 以获取 Java 中的当前日期] 和 return 它到 Java 脚本,然后显示它。
index.html
<button onclick="getDateFromJava();">show current date from Java</button>
main.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));
}
}
主要Javaclass文件
- 查找
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 class
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);
}
}
}