我目前正在使用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方法,但是因为我想使用服务来实现这个功能,我怎么能从那里调用一个方法(或者可能是回调)呢?
非常感谢你提前:)。
好吧所以我没有找到与香草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);
我希望这可以帮助有类似问题的人:)。