取消已创建一个PendingIntent
与FLAG_ONE_SHOT
的唯一办法是举行对到PendingIntent
的引用,然后调用上的参考cancel()
。
如果您不再有参考,则不能取消此PendingIntent
。你不需要使用FLAG_ONE_SHOT
,所以我不会这么做。它会导致比解决问题更多的问题。
根据您对评论中的问题的回答,您想要做的是取消警报。您无需取消PendingIntent
。要取消报警,只是这样做:
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.cancel(pendingIntent);
如果你没有在任何PendingIntent
“临时演员”,那么你可以创建你PendingIntent
这样的:
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
如果你有“群众演员”,在需要的PendingIntent
被替换时,报警复位,您可以创建PendingIntent
这样的:
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
为什么你需要取消'PendingIntent'并创建一个新的?请提供更多数据,以便我可以正确回答您的问题。 –
基本上我会在用户离开游戏时设置待定的意图。这会在5天后触发通知。如果用户在5天内玩过游戏,我应该取消在5天之后计划成功的pendingIntent。在此之后,当玩家退出游戏时,我将再次设置等待的意图,这将在5天后触发。 – iappmaker
所以你没有使用'PendingIntent'来创建'Notification'。您正在将'PendingIntent'发送到'AlarmManager'来设置闹钟。正确? –