Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 79f7892c authored by John Spurlock's avatar John Spurlock
Browse files

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
parent 743054f5
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -1133,6 +1133,7 @@ public class NotificationManagerService extends INotificationManager.Stub
            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 @@ public class NotificationManagerService extends INotificationManager.Stub
                                .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 @@ public class NotificationManagerService extends INotificationManager.Stub
                boolean anyListenersInvolved = false;
                if (pkgList != null && (pkgList.length > 0)) {
                    for (String pkgName : pkgList) {
                        if (cancelNotifications) {
                            cancelAllNotificationsInt(pkgName, 0, 0, !queryRestart,
                                    UserHandle.USER_ALL);
                        }
                        if (mEnabledListenerPackageNames.contains(pkgName)) {
                            anyListenersInvolved = true;
                        }