diff options
| -rw-r--r-- | core/java/android/content/pm/PackageParser.java | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index b8eb074d1636..cfa7af8840b0 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -95,6 +95,7 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.os.ClassLoaderFactory; import com.android.internal.util.ArrayUtils; import com.android.internal.util.XmlUtils; +import com.android.server.SystemConfig; import libcore.io.IoUtils; import libcore.util.EmptyArray; @@ -640,9 +641,12 @@ public class PackageParser { private static boolean checkUseInstalledOrHidden(int flags, PackageUserState state, ApplicationInfo appInfo) { // Returns false if the package is hidden system app until installed. - if ((flags & PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS) == 0 - && !state.installed - && appInfo != null && appInfo.isSystemApp()) { + final ArraySet<String> hiddenSystemApps = + SystemConfig.getInstance().getDisabledUntilUsedPreinstalledCarrierApps(); + if (!state.installed + && appInfo != null && appInfo.isSystemApp() + && hiddenSystemApps.contains(appInfo.packageName) + && (flags & PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS) == 0) { return false; } |