diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 5ee7ac4d16d13..038e47e4dada3 100644 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -4004,16 +4004,19 @@ public class NotificationManagerService extends SystemService { } int indexBefore = findNotificationRecordIndexLocked(record); boolean interceptBefore = record.isIntercepted(); + float contactAffinityBefore = record.getContactAffinity(); int visibilityBefore = record.getPackageVisibilityOverride(); recon.applyChangesLocked(record); applyZenModeLocked(record); mRankingHelper.sort(mNotificationList); int indexAfter = findNotificationRecordIndexLocked(record); boolean interceptAfter = record.isIntercepted(); + float contactAffinityAfter = record.getContactAffinity(); int visibilityAfter = record.getPackageVisibilityOverride(); changed = indexBefore != indexAfter || interceptBefore != interceptAfter || visibilityBefore != visibilityAfter; - if (interceptBefore && !interceptAfter) { + if (interceptBefore && !interceptAfter + && Float.compare(contactAffinityBefore, contactAffinityAfter) != 0) { buzzBeepBlinkLocked(record); } } diff --git a/tests/StatusBar/AndroidManifest.xml b/tests/StatusBar/AndroidManifest.xml index 81442bfc60a4f..6a082e990dab9 100644 --- a/tests/StatusBar/AndroidManifest.xml +++ b/tests/StatusBar/AndroidManifest.xml @@ -6,6 +6,7 @@ + diff --git a/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java b/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java index 5dd42dd21c906..fc68183b5970e 100644 --- a/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java +++ b/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java @@ -129,6 +129,42 @@ public class NotificationTestList extends TestActivity mNM.notify(7001, n); } }, + new Test("with zen") { + public void run() + { + mNM.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_ALARMS); + Notification n = new Notification.Builder(NotificationTestList.this, + "default") + .setSmallIcon(R.drawable.icon2) + .setContentTitle("Default priority") + .build(); + mNM.notify("default", 7004, n); + try { + Thread.sleep(8000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + mNM.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_ALL); + } + }, + new Test("repeated") { + public void run() + { + for (int i = 0; i < 50; i++) { + Notification n = new Notification.Builder(NotificationTestList.this, + "default") + .setSmallIcon(R.drawable.icon2) + .setContentTitle("Default priority") + .build(); + mNM.notify("default", 7004, n); + try { + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + }, new Test("Post a group") { public void run() {