Android: MobileFirst отправляет данные из Native на перекрестную страницу
Моя задача заключается в следующем: с помощью IBM MobileFirst создать гибридное приложение и внедрить калькулятор JS. показать дату, полученную из нативных API Java на веб-странице.
Мои попытки:
- Я следовал за Документациями здесь и реализовал весь метод Native code onCreate
Я нашел этот ответ "первый", иллюстрирующий, что я должен использовать его на onInitWebFrameworkComplete,
- Решение не работает
- Я работаю с MobileFirst версии 7
- полный образец кода предоставляется
Предложение: я должен создать всю панель действий в нативном коде, а затем объединить ее в кросс-интерфейсе, это доступно? Мне нужно только отправить миниатюрную строку даты
1 ответ
Я не совсем понимаю ваши попытки, поэтому здесь приведена краткая демонстрация того, как нажать кнопку в HTML и вызвать API-интерфейс Send Action, чтобы получить текущую дату в Java и вернуть ее в JavaScript, а затем отобразить ее.
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));
}
}
основной файл классов Java
- найти
onInitWebFrameworkComplete
Добавить
ActionReceiver
послеelse
: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);
}
}
}