diff options
author | Romain Guy <> | 2009-03-24 20:27:49 -0700 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-24 20:27:49 -0700 |
commit | 96f4357e065124eda502ee5ad29b6d327d7ad446 (patch) | |
tree | a939aa7ca2c29e0a17634b462a649f1d59ea6137 /services | |
parent | d906b720b8a8e6e527325f106ed87246d51a3571 (diff) | |
download | frameworks_base-96f4357e065124eda502ee5ad29b6d327d7ad446.zip frameworks_base-96f4357e065124eda502ee5ad29b6d327d7ad446.tar.gz frameworks_base-96f4357e065124eda502ee5ad29b6d327d7ad446.tar.bz2 |
Automated import from //branches/donutburger/...@141523,141523
Diffstat (limited to 'services')
-rw-r--r-- | services/java/com/android/server/PackageManagerService.java | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/services/java/com/android/server/PackageManagerService.java b/services/java/com/android/server/PackageManagerService.java index edbb0ce..7fffcb9 100644 --- a/services/java/com/android/server/PackageManagerService.java +++ b/services/java/com/android/server/PackageManagerService.java @@ -3900,14 +3900,26 @@ class PackageManagerService extends IPackageManager.Stub { private boolean deletePackageX(String packageName, boolean sendBroadCast, boolean deleteCodeAndResources, int flags) { PackageRemovedInfo info = new PackageRemovedInfo(); - boolean res = false; + boolean res; synchronized (mInstallLock) { res = deletePackageLI(packageName, deleteCodeAndResources, flags, info); } if(res && sendBroadCast) { - info.sendBroadcast(deleteCodeAndResources, false); + boolean systemUpdate = info.isRemovedPackageSystemUpdate; + info.sendBroadcast(deleteCodeAndResources, systemUpdate); + + // If the removed package was a system update, the old system packaged + // was re-enabled; we need to broadcast this information + if (systemUpdate) { + Bundle extras = new Bundle(1); + extras.putInt(Intent.EXTRA_UID, info.removedUid >= 0 ? info.removedUid : info.uid); + extras.putBoolean(Intent.EXTRA_REPLACING, true); + + sendPackageBroadcast(Intent.ACTION_PACKAGE_ADDED, packageName, extras); + sendPackageBroadcast(Intent.ACTION_PACKAGE_REPLACED, packageName, extras); + } } return res; } @@ -3916,7 +3928,8 @@ class PackageManagerService extends IPackageManager.Stub { String removedPackage; int uid = -1; int removedUid = -1; - + boolean isRemovedPackageSystemUpdate = false; + void sendBroadcast(boolean fullRemove, boolean replacing) { Bundle extras = new Bundle(1); extras.putInt(Intent.EXTRA_UID, removedUid >= 0 ? removedUid : uid); @@ -4002,6 +4015,7 @@ class PackageManagerService extends IPackageManager.Stub { Log.i(TAG, "Deleting system pkg from data partition"); } // Delete the updated package + outInfo.isRemovedPackageSystemUpdate = true; boolean ret = deleteInstalledPackageLI(p, deleteCodeAndResources, flags, outInfo); if (!ret) { return false; |