gpt4 book ai didi

android - 如何取消安卓通知?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:17:59 25 4
gpt4 key购买 nike

我正在制作一个应用程序,用户可以在其中根据 GPS 位置设置闹钟。我只想在任何时候激活 1 个闹钟。所以,当用户设置第二个闹钟时,我想取消第一个闹钟的通知(然后为第二个闹钟设置新的通知)。

现在,我的通知继续堆积(因为我无法删除它们,所以它们都处于 Activity 状态)。这是我尝试删除警报和通知的代码:

// 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 确实可以正常工作。

提前致谢。

最佳答案

首先,去掉getApplicationContext() .您几乎从不需要它,而且它通常是错误的选择。将其替换为 this , 因为不管你叫什么 getApplicationContext() 一个Context .

在您列出的代码中,您从未提出 Notification .因此,很难帮助您弄清楚为什么您会得到不止一个。打电话cancelAll()NotificationManager 上应该从您的应用程序中删除所有未完成的通知。

我最好的猜测是 onDestroy()没有被要求为您服务。如果其他东西将服务保存在内存中,就会发生这种情况(例如,您通过 bindService() 与它建立了 Activity 绑定(bind)连接)。或者,您的 <service> 中可能有一些奇怪的东西 list 中的元素(例如,不必要的 android:process 属性)污染了 NotificationManager cancel()操作。

关于android - 如何取消安卓通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3461743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com