嗨我在我的android项目中使用phonegap本地通知插件。 通知工作得很好。 我可以删除带ID的通知 但在我的应用程序中,我必须删除所有通知选项,此插件为此提供了取消所有通知的方法。 这是: -
plugins.localNotification.cancelAll();
但这不起作用。 我在这里使用这个插件 https://github.com/phonegap/phonegap-plugins/tree/master/Android/LocalNotification 任何帮助将不胜感激。
答案 0 :(得分:2)
我认为这可能就是这个问题的答案。正如它在cancelAllNotifications()
方法(LocalNotification.java第124行)的描述中所述:
Android只能取消注册特定的闹钟。没有取消所有的东西。因此我们依赖共享首选项来保存所有警报,以循环显示这些警报并逐个取消注册。
但是,看一下调用cancelAllNotifications()
方法的代码(第59行):
} else if (action.equalsIgnoreCase("cancelall")) {
unpersistAlarmAll();
return this.cancelAllNotifications();
}
以下是unpersistAlarmAll()
的样子(第181行):
private boolean unpersistAlarmAll() {
final Editor alarmSettingsEditor = this.cordova.getActivity().getSharedPreferences(PLUGIN_NAME, Context.MODE_PRIVATE).edit();
alarmSettingsEditor.clear();
return alarmSettingsEditor.commit();
}
正在发生的事情是,在调用 cancelAllNotifications()
之前,通过sharedPreferences 清除alarmIds,实际上不会取消任何警报。
我不确定将呼叫转移到unpersistAlarmAll()
的最佳位置在哪里,我很乐意得到一些建议。与此同时,在cancelAllNotifications()
返回的结果经过测试(第133行)之后,我已将其移至alarm.cancelAll(alarmSettings)
内,如下所示:
if (result) {
unpersistAlarmAll();
return new PluginResult(PluginResult.Status.OK);
到目前为止,这似乎工作正常。也许另一种方法是废弃整个unpersistAlarmAll()
方法,而是在每个单独的警报成功取消后调用unpersistAlarm(String alarmId)
(第168行)。
答案 1 :(得分:0)
根据您要执行的操作,您可以使用“状态栏通知”。这个插件可以让你把消息放在android状态栏上。
https://github.com/phonegap/phonegap-plugins/tree/master/Android/StatusBarNotification