我正在使用 Phonegap [Cordova 2.2] 在 Android 上开发“提醒”应用程序。
用户为他的提醒输入了一个特定的日期,我应该准时通知他。
我使用 Android 的通知插件,但它支持早期版本的电话间隙。我按照本教程解决了cordova 2.2和以前的冲突,现在已经修复了很多问题,但我仍然无法修复一些:
public PluginResult execute(String action, JSONArray optionsArr, String callBackId) {
alarm = new AlarmHelper(cordova.getActivity());
Log.d(PLUGIN_NAME, "Plugin execute called with action: " + action);
PluginResult result = null;
final AlarmOptions alarmOptions = new AlarmOptions();
alarmOptions.parseOptions(optionsArr);
此函数的这一行有问题:
public PluginResult execute(String action, JSONArray optionsArr, String callBackId)
当我用这一行替换它时:
public boolean execute(String action, JSONArray optionsArr, CallbackContext callbackContext) {
错误已修复,但此函数显示另一个错误:
persistAlarm(alarmId, optionsArr);
return this.add(daily, title, subTitle, ticker, alarmId, alarmOptions.getCal());
} else if (action.equalsIgnoreCase("cancel")) {
unpersistAlarm(alarmId);
return this.cancelNotification(alarmId);
} else if (action.equalsIgnoreCase("cancelall")) {
unpersistAlarmAll();
return this.cancelAllNotifications();
}
return result;
}
返回类型无法转换为布尔值,那么我该如何解决呢?
更新:
我将返回类型替换为布尔值,现在就是这样:
@Override
public boolean execute(String action, JSONArray optionsArr, CallbackContext callBackId)
{
Log.d(PLUGIN_NAME, "optionsArr: " + optionsArr.toString());
alarm = new AlarmHelper(cordova.getActivity());
Log.d(PLUGIN_NAME, "Plugin execute called with action: " + action);
//PluginResult result = null;
boolean result = true;
final AlarmOptions alarmOptions = new AlarmOptions();
alarmOptions.parseOptions(optionsArr);
/*
* Determine which action of the plugin needs to be invoked
*/
String alarmId = alarmOptions.getNotificationId();
if (action.equalsIgnoreCase("add")) {
final boolean daily = alarmOptions.isRepeatDaily();
final String title = alarmOptions.getAlarmTitle();
final String subTitle = alarmOptions.getAlarmSubTitle();
final String ticker = alarmOptions.getAlarmTicker();
persistAlarm(alarmId, optionsArr);
this.add(daily, title, subTitle, ticker, alarmId, alarmOptions.getCal());
callBackId.success();
return true;
}
else if (action.equalsIgnoreCase("cancel")) {
unpersistAlarm(alarmId);
this.cancelNotification(alarmId);
callBackId.success();
return true;
}
else if (action.equalsIgnoreCase("cancelall")) {
unpersistAlarmAll();
this.cancelAllNotifications();
callBackId.success();
return true;
}
return result;
}
现在,它正在工作,但是当我单击通知时,应用程序没有打开并且通知没有消失......我该如何解决这个问题?