Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b953577b authored by Ricky Wai's avatar Ricky Wai
Browse files

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
parent b9616408
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -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;