OSDN Git Service

Limit when a ranking reconsidering can alert
authorJulia Reynolds <juliacr@google.com>
Fri, 23 Jun 2017 20:13:20 +0000 (16:13 -0400)
committerJulia Reynolds <juliacr@google.com>
Fri, 23 Jun 2017 20:43:39 +0000 (16:43 -0400)
Otherwise notifications that were silenced by DND that
still exist when DND is turned off can re-alert.

Test: StatusBarTest,  "with zen". No alerts should happen
within ~10 seconds of starting the test
Change-Id: I9e58118c0a40e0d4f1bafb0913e569b560879ba2
Fixes: 62355996

services/core/java/com/android/server/notification/NotificationManagerService.java
tests/StatusBar/AndroidManifest.xml
tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java

index e5dc550..fbe6d30 100644 (file)
@@ -4194,16 +4194,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);
             }
         }
index 81442bf..6a082e9 100644 (file)
@@ -6,6 +6,7 @@
     <uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
     <uses-permission android:name="android.permission.VIBRATE" />
     <uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE" />
+    <uses-permission android:name="android.permission.MANAGE_NOTIFICATIONS" />
 
     <application>
         <activity android:name="StatusBarTest" android:label="_StatusBar">
index fba89d1..fc68183 100644 (file)
@@ -129,6 +129,24 @@ 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()
                 {