Вызов метода javascript из сервиса Cordova Plugin - PullRequest
0 голосов
/ 12 марта 2019

В настоящее время я разрабатываю приложение с использованием Cordova и поэтому разработал плагин Cordova, который запускает службу и запускается из этого плагина:

  public boolean execute(String action, JSONArray args, final CallbackContext callbackContext) throws JSONException {
switch(action){
  case "start":
  Intent startIntent = new Intent(context, BackgroundService.class);
  startIntent.putExtra("action", "play");
  context.startService(startIntent);
  return true;
 }
return false;
}

Код сокращен для удобства чтения. Теперь обычно я использовал бы обратные вызовы для вызова методов javascript из плагина, но, поскольку я хочу использовать сервис для функциональности, как я мог бы вызвать метод (или, возможно, обратный вызов) оттуда?

Заранее большое спасибо:).

1 Ответ

0 голосов
/ 12 марта 2019

Хорошо, так что я не нашел пути к этому с vanilla cordova, но этот плагин предоставляет функции, которые я искал: https://github.com/bsorrentino/cordova-broadcaster

Вы должны настроить LocalBroadcastManager в своем родном коде Android и отправить с ним Интент. Затем вы определяете пакет, содержащий данные, которые вы хотите отправить, и добавляете его в качестве дополнительного намерения. Затем вы отправляете намерение через менеджер вещания и получаете его через javascript.

Пример Java:

  startCallback = new Intent("callback");
  Bundle b = new Bundle();
  b.putString("callback", "start");
  startCallback.putExtras(b);
  LocalBroadcastManager.getInstance(applicationContext).sendBroadcastSync(startCallback);

Пример Javascript:

var callbackListener = function( e ) {
       console.log("What kind of callback: " + e.callback);
    };

window.broadcaster.addEventListener( "callback", callbackListener);

Надеюсь, это поможет кому-то с похожей проблемой:).

...