取消已創建一個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'來設置鬧鐘。正確? –