从Cordova Plugin的服务调用javascript方法

问题描述 投票:0回答:1

我目前正在使用Cordova开发一个App,因此开发了一个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方法,但是因为我想使用服务来实现这个功能,我怎么能从那里调用一个方法(或者可能是回调)呢?

非常感谢你提前:)。

javascript android cordova android-service cordova-plugins
1个回答
-1
投票

好吧所以我没有找到与香草cordova相关的方法,但是这个插件提供了我正在寻找的功能:https://github.com/bsorrentino/cordova-broadcaster

您必须在本机Android代码中设置LocalBroadcastManager并使用它发送Intent。然后,您可以定义包含要发送的数据的捆绑包,并将其作为额外的意图。然后通过广播管理器发送意图并通过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);

我希望这可以帮助有类似问题的人:)。

© www.soinside.com 2019 - 2024. All rights reserved.