Deactivate notification listeners disabled at runtime.

PACKAGE_CHANGED is called when either the application or any
of its components change.  Rework old early exit code to
handle component-level disabling wrt listeners.

Note PACKAGE_CHANGED can take quite a while to reach NMS.
Up to ten seconds (!) after component-disabling in app.

Bug:8982243
Change-Id: Ia325516140dd9288466a663192a5326019f071ab
diff --git a/services/java/com/android/server/NotificationManagerService.java b/services/java/com/android/server/NotificationManagerService.java
index 903bc0b..4348a81 100644
--- a/services/java/com/android/server/NotificationManagerService.java
+++ b/services/java/com/android/server/NotificationManagerService.java
@@ -1133,6 +1133,7 @@
             boolean queryRestart = false;
             boolean queryRemove = false;
             boolean packageChanged = false;
+            boolean cancelNotifications = true;
             
             if (action.equals(Intent.ACTION_PACKAGE_ADDED)
                     || (queryRemove=action.equals(Intent.ACTION_PACKAGE_REMOVED))
@@ -1163,7 +1164,7 @@
                                 .getApplicationEnabledSetting(pkgName);
                         if (enabled == PackageManager.COMPONENT_ENABLED_STATE_ENABLED
                                 || enabled == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT) {
-                            return;
+                            cancelNotifications = false;
                         }
                     }
                     pkgList = new String[]{pkgName};
@@ -1172,8 +1173,10 @@
                 boolean anyListenersInvolved = false;
                 if (pkgList != null && (pkgList.length > 0)) {
                     for (String pkgName : pkgList) {
-                        cancelAllNotificationsInt(pkgName, 0, 0, !queryRestart,
-                                UserHandle.USER_ALL);
+                        if (cancelNotifications) {
+                            cancelAllNotificationsInt(pkgName, 0, 0, !queryRestart,
+                                    UserHandle.USER_ALL);
+                        }
                         if (mEnabledListenerPackageNames.contains(pkgName)) {
                             anyListenersInvolved = true;
                         }