我正在制作一个应用程序,用户可以根据GPS位置设置闹钟。我只希望在任何时候都有1个闹钟处于活动状态。因此,当用户设置第二个闹钟时,我想要取消第一个闹钟的通知(然后设置第二个闹钟的新通知)。如何取消Android通知?
现在,我的通知继续堆叠(因为我无法删除它们,所以它们都是活动的)。这里是我的代码,我正在试图删除警报和通知(S):
// Stop the location alarm activity
Intent intentAlarmService_delete = new Intent(v.getContext(), AlarmService.class);
stopService(intentAlarmService_delete); // I think this calls onDestroy() in AlarmService class ...
mNtf = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
mNtf.cancelAll();
Intent alarmIntent2 = new Intent(getApplicationContext(), OneTimeAlarmReceiver.class);
PendingIntent pendingIntentAlarm = PendingIntent.getBroadcast(getApplicationContext(), PENDING_INTENT_REQUEST_CODE1,
alarmIntent2, PendingIntent.FLAG_CANCEL_CURRENT);
pendingIntentAlarm.cancel();
这是我AlarmService.class中的onDestroy()函数(我真的不知道,当这个叫.. 。)
public void onDestroy(){
super.onDestroy();
mNtf.cancel(NOTIFICATION_ID1);
Intent alarmIntent = new Intent(getApplicationContext(), OneTimeAlarmReceiver.class);
PendingIntent pendingIntentAlarm = PendingIntent.getBroadcast(getApplicationContext(), PENDING_INTENT_REQUEST_CODE1,
alarmIntent, PendingIntent.FLAG_CANCEL_CURRENT);
pendingIntentAlarm.cancel();
Intent intentAlarmService = new Intent(getApplicationContext(), AlarmService.class);
stopService(intentAlarmService);
mNtf.cancel(NOTIFICATION_ID1);
mNtf.cancelAll();
}
那么,这就是我如何设置一个新的警报和通知:
Intent intentAlarmService2 = new Intent(v.getContext(), AlarmService.class);
startService(intentAlarmService2);
顺便说一句,我的AlarmService.class工作是肯定的。
在此先感谢。
嗯,我检查了你所建议的所有东西,但没有一个能够正常工作... (我不能使用“this”,因为我似乎得到一个错误 - 这可能导致所有代码都在“public void onClick(View v)“功能。)+(我不使用onBind();)+(在没有陌生的东西) –
2010-08-13 00:21:58
我要说明到底发生了什么: 我尝试在NotificationManager调用cancelAll(),但: 1 )我设置了一个新的通知(它显示在“通知窗口” - 当你从屏幕顶部向下滑动手指到底部时) 2)我删除了通知(它从“通知窗口” 3消失)我设置了一个新的通知***(它显示在“通知窗口”中,但是之前的通知(已被删除)显示在最新的通知(刚刚设置)之上),并且2个通知保持闪烁/交替“通知窗口” – 2010-08-13 00:22:17
@亚西尔玛朗:“我不能使用”这个“,因为我似乎得到一个错误” - 你是在内部类中,然后需要使用'MyOuterClass.this'(将您的活动类名称替换为'MyOuterClass')。 – CommonsWare 2010-08-13 00:27:34