覆盖现有警报

Cil*_*nco 4 android android-alarms

我在我的应用程序中创建了一个alaram,它使用以下代码调用BroadcastReceiver来设置通知:

Intent intent = new Intent(Benachrichtigung.CUSTOM_INTENT);
PendingIntent pendingIntent  = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 8);
calendar.set(Calendar.MINUTE, 00);
calendar.set(Calendar.SECOND, 00);

alram = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alram.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), (24 * 60 * 60 * 1000), pendingIntent);
Run Code Online (Sandbox Code Playgroud)

现在我希望用户可以设置通知的时间,所以我必须calendar.set使用新值调用.如何用新的警报覆盖现有警报?

cod*_*gic 9

要取消或使用更新的警报AlarmManagerIntent使用filterEquals必须匹配.所以基本上,你重新创建与PendingIntent原作相同的内容,并且AlarmManager会看到它们是相同的.这包括REQUEST_CODE, INTENT_ACTIONINTENT_DATA(我可以在那里失去了一些东西,但这些都是非常重要的.

注意:

EXTRAS不用于比较两个Intents.

因此,如果两个Intents相等,那么第一个将被覆盖.当我有更多的时间,我可以尝试找到一个资源,以更好地解释这一点.

根据Intent Docs filterEquals

为了意图解析(过滤)的目的,确定两个意图是否相同.也就是说,如果他们的行为,数据,类型,类别和类别是相同的.这不会比较意图中包含的任何额外数据.