diff options
| -rw-r--r-- | services/core/java/com/android/server/pm/Settings.java | 15 |
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 |