From 26ece57dadb5e59e619bcd5d906935837d55d5db Mon Sep 17 00:00:00 2001 From: Daniel Sandler Date: Fri, 1 Jun 2012 15:38:46 -0400 Subject: Be more discriminating when canceling notifications on changing packages. Specifically: don't do it if the package is enabled at the time the PACKAGE_CHANGED broadcast is sent. (We only want to cancel notifications when packages enter the disabled state.) Bug: 6589355 Change-Id: Iba754cef27e2bdff35a13e403a867933c996f562 --- .../java/com/android/server/NotificationManagerService.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'services') diff --git a/services/java/com/android/server/NotificationManagerService.java b/services/java/com/android/server/NotificationManagerService.java index 52ba665..f6d3b608 100755 --- a/services/java/com/android/server/NotificationManagerService.java +++ b/services/java/com/android/server/NotificationManagerService.java @@ -494,10 +494,11 @@ public class NotificationManagerService extends INotificationManager.Stub String action = intent.getAction(); boolean queryRestart = false; + boolean packageChanged = false; if (action.equals(Intent.ACTION_PACKAGE_REMOVED) || action.equals(Intent.ACTION_PACKAGE_RESTARTED) - || action.equals(Intent.ACTION_PACKAGE_CHANGED) + || (packageChanged=action.equals(Intent.ACTION_PACKAGE_CHANGED)) || (queryRestart=action.equals(Intent.ACTION_QUERY_PACKAGE_RESTART)) || action.equals(Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE)) { String pkgList[] = null; @@ -514,6 +515,15 @@ public class NotificationManagerService extends INotificationManager.Stub if (pkgName == null) { return; } + if (packageChanged) { + // We cancel notifications for packages which have just been disabled + final int enabled = mContext.getPackageManager() + .getApplicationEnabledSetting(pkgName); + if (enabled == PackageManager.COMPONENT_ENABLED_STATE_ENABLED + || enabled == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT) { + return; + } + } pkgList = new String[]{pkgName}; } if (pkgList != null && (pkgList.length > 0)) { -- cgit v1.1