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

Commit 4c43fbd1 authored by Daniel Nishi's avatar Daniel Nishi
Browse files

Fix a bug where the Deletion Helper could not delete packages.

Bug: 31096000
Change-Id: I780cf74dc6750110024dcb0008b47879597f0156
parent feef9897
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -1119,6 +1119,7 @@ public class PackageManagerService extends IPackageManager.Stub {
    final @Nullable String mRequiredVerifierPackage;
    final @NonNull String mRequiredInstallerPackage;
    final @Nullable String mSetupWizardPackage;
    final @Nullable String mStorageManagerPackage;
    final @NonNull String mServicesSystemSharedLibraryPackageName;
    final @NonNull String mSharedSystemSharedLibraryPackageName;
@@ -2471,6 +2472,9 @@ public class PackageManagerService extends IPackageManager.Stub {
            }
            mExpectingBetter.clear();
            // Resolve the storage manager.
            mStorageManagerPackage = getStorageManagerPackageName();
            // Resolve protected action filters. Only the setup wizard is allowed to
            // have a high priority filter for these actions.
            mSetupWizardPackage = getSetupWizardPackageName();
@@ -15387,6 +15391,7 @@ public class PackageManagerService extends IPackageManager.Stub {
        final int uid = Binder.getCallingUid();
        if (uid != Process.SHELL_UID && uid != Process.ROOT_UID && uid != Process.SYSTEM_UID
                && uid != getPackageUid(mRequiredInstallerPackage, 0, UserHandle.getUserId(uid))
                && uid != getPackageUid(mStorageManagerPackage, 0, UserHandle.getUserId(uid))
                && !isOrphaned(packageName)
                && !isCallerSameAsInstaller(uid, packageName)) {
            try {
@@ -17684,6 +17689,22 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
        }
    }
    private @Nullable String getStorageManagerPackageName() {
        final Intent intent = new Intent(StorageManager.ACTION_MANAGE_STORAGE);
        final List<ResolveInfo> matches = queryIntentActivitiesInternal(intent, null,
                MATCH_SYSTEM_ONLY | MATCH_DIRECT_BOOT_AWARE | MATCH_DIRECT_BOOT_UNAWARE
                        | MATCH_DISABLED_COMPONENTS,
                UserHandle.myUserId());
        if (matches.size() == 1) {
            return matches.get(0).getComponentInfo().packageName;
        } else {
            Slog.e(TAG, "There should probably be exactly one storage manager; found "
                    + matches.size() + ": matches=" + matches);
            return null;
        }
    }
    @Override
    public void setApplicationEnabledSetting(String appPackageName,
            int newState, int flags, int userId, String callingPackage) {