summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/pm/Settings.java15
1 files changed, 15 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index 7debf9b5b7fb..f20a36e1f3c0 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -718,6 +718,21 @@ final class Settings {
// let's log a message about it.
Slog.i(PackageManagerService.TAG, "Package " + name + " codePath changed from "
+ p.codePath + " to " + codePath + "; Retaining data and using new");
+
+ // The owner user's installed flag is set false
+ // when the application was installed by other user
+ // and the installed flag is not updated
+ // when the application is appended as system app later.
+ if ((pkgFlags & ApplicationInfo.FLAG_SYSTEM) != 0 &&
+ getDisabledSystemPkgLPr(name) == null) {
+ List<UserInfo> allUserInfos = getAllUsers();
+ if (allUserInfos != null) {
+ for (UserInfo userInfo : allUserInfos) {
+ p.setInstalled(true, userInfo.id);
+ }
+ }
+ }
+
/*
* Since we've changed paths, we need to prefer the new
* native library path over the one stored in the