diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 76aba25822d00..44169a535e1cf 100755 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -8310,6 +8310,21 @@ public class NotificationManagerService extends SystemService { int rank, int count, boolean wasPosted, String listenerName) { final String canceledKey = r.getKey(); + // Get pending intent used to create alarm, use FLAG_NO_CREATE if PendingIntent + // does not already exist, then null will be returned. + final PendingIntent pi = PendingIntent.getBroadcast(getContext(), + REQUEST_CODE_TIMEOUT, + new Intent(ACTION_NOTIFICATION_TIMEOUT) + .setData(new Uri.Builder().scheme(SCHEME_TIMEOUT) + .appendPath(r.getKey()).build()) + .addFlags(Intent.FLAG_RECEIVER_FOREGROUND), + PendingIntent.FLAG_NO_CREATE | PendingIntent.FLAG_IMMUTABLE); + + // Cancel alarm corresponding to pi. + if (pi != null) { + mAlarmManager.cancel(pi); + } + // Record caller. recordCallerLocked(r);