diff options
| -rw-r--r-- | services/java/com/android/server/pm/PackageManagerService.java | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java index 7c14d496a210..d41cd5a353f4 100644 --- a/services/java/com/android/server/pm/PackageManagerService.java +++ b/services/java/com/android/server/pm/PackageManagerService.java @@ -3118,8 +3118,9 @@ public class PackageManagerService extends IPackageManager.Stub { + "reverting from " + ps.codePathString + ": new version " + pkg.mVersionCode + " better than installed " + ps.versionCode); - InstallArgs args = createInstallArgs(ps.pkgFlags, ps.codePathString, - ps.resourcePathString, ps.nativeLibraryPathString); + + InstallArgs args = createInstallArgs(packageFlagsToInstallFlags(ps), + ps.codePathString, ps.resourcePathString, ps.nativeLibraryPathString); synchronized (mInstaller) { args.cleanUpResourcesLI(); } @@ -3174,8 +3175,8 @@ public class PackageManagerService extends IPackageManager.Stub { Slog.w(TAG, "Package " + ps.name + " at " + scanFile + "reverting from " + ps.codePathString + ": new version " + pkg.mVersionCode + " better than installed " + ps.versionCode); - InstallArgs args = createInstallArgs(ps.pkgFlags, ps.codePathString, - ps.resourcePathString, ps.nativeLibraryPathString); + InstallArgs args = createInstallArgs(packageFlagsToInstallFlags(ps), + ps.codePathString, ps.resourcePathString, ps.nativeLibraryPathString); synchronized (mInstaller) { args.cleanUpResourcesLI(); } @@ -7252,6 +7253,11 @@ public class PackageManagerService extends IPackageManager.Stub { return (pkg.applicationInfo.flags & ApplicationInfo.FLAG_FORWARD_LOCK) != 0; } + + private boolean isForwardLocked(PackageSetting ps) { + return (ps.pkgFlags & ApplicationInfo.FLAG_FORWARD_LOCK) != 0; + } + private static boolean isExternal(PackageParser.Package pkg) { return (pkg.applicationInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0; } @@ -7276,6 +7282,17 @@ public class PackageManagerService extends IPackageManager.Stub { return (pkg.applicationInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0; } + private int packageFlagsToInstallFlags(PackageSetting ps) { + int installFlags = 0; + if (isExternal(ps)) { + installFlags |= PackageManager.INSTALL_EXTERNAL; + } + if (isForwardLocked(ps)) { + installFlags |= PackageManager.INSTALL_FORWARD_LOCK; + } + return installFlags; + } + private void deleteTempPackageFiles() { FilenameFilter filter = new FilenameFilter() { public boolean accept(File dir, String name) { |