gpt4 book ai didi

android - 仅为已删除的警报删除 AlarmManager 警报

转载 作者:行者123 更新时间:2023-11-29 14:40:08 25 4
gpt4 key购买 nike

我的应用程序将同时设置多个闹钟。不幸的是,每个警报都使用相同的 PendingIntent 对象设置。这是我用来设置闹钟的代码:

//Use AlarmManager to trigger the notification/alarm.
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

//PendingIntent to launch activity when the alarm triggers.
Intent i = new Intent("com.testapp.DisplayNotification");

//Assign the reminder's primary key as the notification ID.
i.putExtra("Reminder_Name", editRemindMeTo.getText().toString());
i.putExtra("Reminder_Primary_Key", reminderPrimaryKey);

PendingIntent displayIntent = PendingIntent.getActivity(
getBaseContext(), 0, i, 0);

//Set the alarm to trigger.
alarmManager.set(AlarmManager.RTC_WAKEUP,
c.getTimeInMillis(), displayIntent);

我知道我可以使用以下代码删除警报:

AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 

Intent i = new Intent(context, MyPendingIntentService.class);
PendingIntent displayIntent = PendingIntent.getService(context, 0, i, 0);

alarmManager.cancel(displyIntent);

但是,使用此代码将删除我所有的警报(如果我在这里错了请纠正我)。有没有办法删除用户从数据库中删除的警报?在用户删除我的应用程序数据库中的警报条目后,应立即从我的应用程序中删除警报。我猜想使用不同的 PendingIntent 名称是可行的方法,但我不知道如何为用户创建的每个新警报执行此操作。关于如何做到这一点的想法?谢谢!

最佳答案

看到我之前在这里遇到的同样问题......所以解决方案是将唯一的未决 Intent 传递给警报服务。所以这里我是如何完成的

PendingIntent pIntent = PendingIntent.getBroadcast(context, (int) alarm_id, intent, PendingIntent.FLAG_CANCEL_CURRENT);

在待定 Intent 中,我已将唯一请求 ID 传递给待定 Intent 。取消闹钟时必须记住这一点。所以在我的例子中,我为生成唯一 ID 所做的工作是将它放入数据库中,我已经检索了表行的 ID 并传递给了待处理的 Intent。
因此,如果您想取消特定警报,您必须使用相同的表条目记住未决 Intent 的相同请求 ID...

我相信它会工作..

关于android - 仅为已删除的警报删除 AlarmManager 警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12576563/

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