From b953577b2784bebfc47ca8ad31fa55f2ea9808d1 Mon Sep 17 00:00:00 2001 From: Ricky Wai Date: Wed, 20 Feb 2019 17:53:44 +0000 Subject: [PATCH] Disable app details activity for the apps installed before Q Bug: 124876950 Test: Set mIsPreQUpgrade to true, all existing app without launcher icon still remain doesn't have an icon Change-Id: I38d4af7a0b1c28dba3f2f82746805a3f848cf87f --- .../server/pm/PackageManagerService.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 00b02ffa52f6a..e7e3e833d3852 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -629,6 +629,7 @@ public class PackageManagerService extends IPackageManager.Stub final boolean mIsUpgrade; final boolean mIsPreNUpgrade; final boolean mIsPreNMR1Upgrade; + final boolean mIsPreQUpgrade; @GuardedBy("mPackages") private boolean mDexOptDialogShown; @@ -2399,6 +2400,7 @@ public class PackageManagerService extends IPackageManager.Stub mIsPreNUpgrade = mIsUpgrade && ver.sdkVersion < Build.VERSION_CODES.N; mIsPreNMR1Upgrade = mIsUpgrade && ver.sdkVersion < Build.VERSION_CODES.N_MR1; + mIsPreQUpgrade = mIsUpgrade && ver.sdkVersion < Build.VERSION_CODES.Q; int preUpgradeSdkVersion = ver.sdkVersion; @@ -3025,6 +3027,21 @@ public class PackageManagerService extends IPackageManager.Stub ver.fingerprint = Build.FINGERPRINT; } + // Grandfather existing (installed before Q) non-system apps to hide + // their icons in launcher. + if (!onlyCore && mIsPreQUpgrade) { + Slog.i(TAG, "Whitelisting all existing apps to hide their icons"); + int size = mSettings.mPackages.size(); + for (int i = 0; i < size; i++) { + final PackageSetting ps = mSettings.mPackages.valueAt(i); + if ((ps.pkgFlags & ApplicationInfo.FLAG_SYSTEM) != 0) { + continue; + } + ps.disableComponentLPw(PackageManager.APP_DETAILS_ACTIVITY_CLASS_NAME, + UserHandle.USER_SYSTEM); + } + } + // clear only after permissions and other defaults have been updated mExistingSystemPackages.clear(); mPromoteSystemApps = false;