summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorRomain Guy <>2009-03-24 20:27:49 -0700
committerThe Android Open Source Project <initial-contribution@android.com>2009-03-24 20:27:49 -0700
commit96f4357e065124eda502ee5ad29b6d327d7ad446 (patch)
treea939aa7ca2c29e0a17634b462a649f1d59ea6137 /services
parentd906b720b8a8e6e527325f106ed87246d51a3571 (diff)
downloadframeworks_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.java20
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;