Android: MobileFirst отправляет данные из Native на перекрестную страницу

Моя задача заключается в следующем: с помощью IBM MobileFirst создать гибридное приложение и внедрить калькулятор JS. показать дату, полученную из нативных API Java на веб-странице.

Мои попытки:

  1. Я следовал за Документациями здесь и реализовал весь метод Native code onCreate
  2. Я нашел этот ответ "первый", иллюстрирующий, что я должен использовать его на 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

  1. найти onInitWebFrameworkComplete
  2. Добавить 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);
        }
    }
}
Другие вопросы по тегам