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

Commit 70939124 authored by Daniel Nishi's avatar Daniel Nishi Committed by android-build-merger
Browse files

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

am: 26af56d2

Change-Id: I6f9d5e1eedd423dd6913a5a264b1df13bc4e67d4
parents 9f24d571 26af56d2
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -1128,6 +1128,7 @@ public class PackageManagerService extends IPackageManager.Stub {
    final @NonNull String mRequiredInstallerPackage;
    final @NonNull String mRequiredUninstallerPackage;
    final @Nullable String mSetupWizardPackage;
    final @Nullable String mStorageManagerPackage;
    final @NonNull String mServicesSystemSharedLibraryPackageName;
    final @NonNull String mSharedSystemSharedLibraryPackageName;
@@ -2469,6 +2470,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();
@@ -15513,6 +15517,12 @@ public class PackageManagerService extends IPackageManager.Stub {
                callingUid == getPackageUid(mRequiredUninstallerPackage, 0, callingUserId)) {
            return true;
        }
        // Allow storage manager to silently uninstall.
        if (mStorageManagerPackage != null &&
                callingUid == getPackageUid(mStorageManagerPackage, 0, callingUserId)) {
            return true;
        }
        return false;
    }
@@ -17728,6 +17738,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) {