summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorKenny Root <kroot@google.com>2012-06-25 16:37:32 -0700
committerKenny Root <kroot@google.com>2012-06-25 16:39:45 -0700
commiteca64b391408dfdb9ff3ae03fc39cfdb6918f3ad (patch)
tree0dbed5da46e6c62559e100c78132693957cbcd3b /services
parente9b4b3e94d396d176338c62f8c9f4c183b340f9b (diff)
downloadframeworks_base-eca64b391408dfdb9ff3ae03fc39cfdb6918f3ad.zip
frameworks_base-eca64b391408dfdb9ff3ae03fc39cfdb6918f3ad.tar.gz
frameworks_base-eca64b391408dfdb9ff3ae03fc39cfdb6918f3ad.tar.bz2
Use removePackageLI instead of removing mPackages
When adding an system app via OTA, trying to remove it from mPackages directly doesn't work. The ContentProviders and other things aren't removed and point to the hidden system app's applicationInfo instead of the updated app. Bug: 6685263 Change-Id: I487cf518e0e3c60fae736e9b974617023a7dee8d
Diffstat (limited to 'services')
-rw-r--r--services/java/com/android/server/pm/PackageManagerService.java11
-rw-r--r--services/java/com/android/server/pm/Settings.java5
2 files changed, 14 insertions, 2 deletions
diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java
index 9a79f86..e20cd02 100644
--- a/services/java/com/android/server/pm/PackageManagerService.java
+++ b/services/java/com/android/server/pm/PackageManagerService.java
@@ -1087,7 +1087,8 @@ public class PackageManagerService extends IPackageManager.Stub {
/*
* If the package is scanned, it's not erased.
*/
- if (mPackages.containsKey(ps.name)) {
+ final PackageParser.Package scannedPkg = mPackages.get(ps.name);
+ if (scannedPkg != null) {
/*
* If the system app is both scanned and in the
* disabled packages list, then it must have been
@@ -1096,7 +1097,9 @@ public class PackageManagerService extends IPackageManager.Stub {
* application can be scanned.
*/
if (mSettings.isDisabledSystemPackageLPr(ps.name)) {
- mPackages.remove(ps.name);
+ Slog.i(TAG, "Expecting better updatd system app for " + ps.name
+ + "; removing system app");
+ removePackageLI(scannedPkg, true);
}
continue;
@@ -8626,6 +8629,10 @@ public class PackageManagerService extends IPackageManager.Stub {
}
pw.print(" ["); pw.print(entry.getKey()); pw.println("]:");
pw.print(" "); pw.println(p.toString());
+ if (p.info != null && p.info.applicationInfo != null) {
+ final String appInfo = p.info.applicationInfo.toString();
+ pw.print(" applicationInfo="); pw.println(appInfo);
+ }
}
}
diff --git a/services/java/com/android/server/pm/Settings.java b/services/java/com/android/server/pm/Settings.java
index 91cd458..d031686 100644
--- a/services/java/com/android/server/pm/Settings.java
+++ b/services/java/com/android/server/pm/Settings.java
@@ -2459,6 +2459,7 @@ final class Settings {
pw.print(" nativeLibraryPath="); pw.println(ps.nativeLibraryPathString);
pw.print(" versionCode="); pw.println(ps.versionCode);
if (ps.pkg != null) {
+ pw.print(" applicationInfo="); pw.println(ps.pkg.applicationInfo.toString());
pw.print(" flags="); printFlags(pw, ps.pkg.applicationInfo.flags, FLAG_DUMP_SPEC); pw.println();
pw.print(" versionName="); pw.println(ps.pkg.mVersionName);
pw.print(" dataDir="); pw.println(ps.pkg.applicationInfo.dataDir);
@@ -2592,6 +2593,10 @@ final class Settings {
pw.print(" compat name=");
pw.println(ps.name);
}
+ if (ps.pkg != null && ps.pkg.applicationInfo != null) {
+ pw.print(" applicationInfo=");
+ pw.println(ps.pkg.applicationInfo.toString());
+ }
pw.print(" userId=");
pw.println(ps.appId);
pw.print(" sharedUser=");