未调用Cordova exec成功函数(Android)

未调用Cordova exec成功函数(Android),android,cordova,ionic-framework,phonegap-plugins,cordova-plugins,Android,Cordova,Ionic Framework,Phonegap Plugins,Cordova Plugins,如果设备的时区在应用程序处于后台时发生变化,Java插件会成功地将TimezoneVariables中的布尔值更新为true/false。当应用程序恢复时,我调用我的插件以获取布尔值,它打印getIsTimezoneChanged为true,但不打印时区确实发生了更改 $log.debug javascript函数可以正常工作,就像console.log一样。如果有人能告诉我为什么没有调用exec successcallback,相关代码如下 Java代码: @Override public b

如果设备的时区在应用程序处于后台时发生变化,Java插件会成功地将TimezoneVariables中的布尔值更新为true/false。当应用程序恢复时,我调用我的插件以获取布尔值,它打印getIsTimezoneChanged为true,但不打印时区确实发生了更改

$log.debug javascript函数可以正常工作,就像console.log一样。如果有人能告诉我为什么没有调用exec successcallback,相关代码如下

Java代码:

@Override
public boolean execute(String action, JSONArray data, CallbackContext callbackContext) throws JSONException {
    if(action.equals("createTimezoneChangeListener")) {
        TimezoneVariables.setCallbackContext(callbackContext);
        TimezoneVariables.setIsTimezoneChanged(false);
    }else if(action.equals("checkTimezoneChange")){
        if (TimezoneVariables.getIsTimezoneChanged()){
            Log.d("TimezoneUpdater","getIsTimezoneChanged is true");
            TimezoneVariables.setIsTimezoneChanged(false);
            return true;
        } else return false;        
    }
    return true;
}
Javascript代理:

function TimezoneUpdater()
{

}

TimezoneUpdater.prototype = {
    checkTimezoneChange: function (changedCallback) {
        cordova.exec(changedCallback, null, "TimezoneUpdater", "checkTimezoneChange", []);
    }
}

module.exports = {
    createTimezoneChangeListener: function(){       
        cordova.exec(null, null, "TimezoneUpdater", "createTimezoneChangeListener", []);        
        return new TimezoneUpdater();
    }
};
www.javascript代码:

  var ref = window.timezoneUpdater.createTimezoneChangeListener();
  document.addEventListener("resume", function(){
    ref.checkTimezoneChange(function(){
      //Timezone did change while app was in the background
      $log.debug("timezone did change");
    });
  }, false);

这是因为您从未在本机实现中调用回调。Cordova不会自动调用成功回调函数,您必须使用CallbackContext如下所示:

if (TimezoneVariables.getIsTimezoneChanged()) {
  callbackContext.success("timezone changed"); // you can pass whatever you want here
  return true;
else {
  callbackContext.error("timezone did not change"); // you have to pass an error callback for that too
  return false;
}