OSDN Git Service

Once again, cancel all when notifications canceled for pkg.
authorDaniel Sandler <dsandler@android.com>
Thu, 18 Apr 2013 14:51:35 +0000 (10:51 -0400)
committerDaniel Sandler <dsandler@android.com>
Thu, 18 Apr 2013 15:31:52 +0000 (11:31 -0400)
Right now this only works if you go through the front door
(using setNotificationsEnabledForPackage()); if you set the
AppOps for a package otherwise the existing notifications
will not be cleared (but new ones will be blocked). Since
there's no UI for modifying AppOps today this shouldn't be a
problem.

Bug: 8489214
Change-Id: I84f8c76a0d03959127e9076ab2b7d37dbdaebb17

services/java/com/android/server/NotificationManagerService.java

index 3bebf91..9a93f63 100644 (file)
@@ -450,11 +450,16 @@ public class NotificationManagerService extends INotificationManager.Stub
 
     public void setNotificationsEnabledForPackage(String pkg, int uid, boolean enabled) {
         checkCallerIsSystem();
-        if (true||DBG) {
-            Slog.v(TAG, (enabled?"en":"dis") + "abling notifications for " + pkg);
-        }
+
+        Slog.v(TAG, (enabled?"en":"dis") + "abling notifications for " + pkg);
+
         mAppOps.setMode(AppOpsManager.OP_POST_NOTIFICATION, uid, pkg,
                 enabled ? AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_IGNORED);
+
+        // Now, cancel any outstanding notifications that are part of a just-disabled app
+        if (ENABLE_BLOCKED_NOTIFICATIONS && !enabled) {
+            cancelAllNotificationsInt(pkg, 0, 0, true, UserHandle.getUserId(uid));
+        }
     }