From 88c908323a53bc217f860f811038725f668df454 Mon Sep 17 00:00:00 2001 From: Christopher Tate Date: Wed, 8 Jan 2014 16:54:25 -0800 Subject: [PATCH] Update PackageMonitor to recognize new 'replacing' semantics The ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE broadcast now uses the EXTRA_REPLACING intent extra when it is sent as part of an upgrade operation on a forward-locked application. Update PackageMonitor to recognize this new information and express it appropriately to the observer. Bug 11988313 Cherry-pick from master. Change-Id: Iecea1876ffc918f23f9fa5845f1f89ed8d740dd5 --- .../com/android/internal/content/PackageMonitor.java | 10 ++++++---- .../com/android/server/pm/PackageManagerService.java | 4 ++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/core/java/com/android/internal/content/PackageMonitor.java b/core/java/com/android/internal/content/PackageMonitor.java index ab871fb80a59d..942995b51a83e 100644 --- a/core/java/com/android/internal/content/PackageMonitor.java +++ b/core/java/com/android/internal/content/PackageMonitor.java @@ -372,23 +372,25 @@ public abstract class PackageMonitor extends android.content.BroadcastReceiver { } else if (Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE.equals(action)) { String[] pkgList = intent.getStringArrayExtra(Intent.EXTRA_CHANGED_PACKAGE_LIST); mAppearingPackages = pkgList; - mChangeType = PACKAGE_TEMPORARY_CHANGE; + mChangeType = intent.getBooleanExtra(Intent.EXTRA_REPLACING, false) + ? PACKAGE_UPDATING : PACKAGE_TEMPORARY_CHANGE; mSomePackagesChanged = true; if (pkgList != null) { onPackagesAvailable(pkgList); for (int i=0; i pkgList = new ArrayList(1); pkgList.add(res.pkg.applicationInfo.packageName); - sendResourcesChangedBroadcast(true, false, + sendResourcesChangedBroadcast(true, true, pkgList,uidArray, null); } } @@ -11058,7 +11058,7 @@ public class PackageManagerService extends IPackageManager.Stub { if (uidArr != null) { extras.putIntArray(Intent.EXTRA_CHANGED_UID_LIST, uidArr); } - if (replacing && !mediaStatus) { + if (replacing) { extras.putBoolean(Intent.EXTRA_REPLACING, replacing); } String action = mediaStatus ? Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE