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

Commit 632450f3 authored by Ivan Chiang's avatar Ivan Chiang Committed by Android Build Coastguard Worker
Browse files

[PM] Support update-ownership for Archived app

Flag: android.content.pm.archiving
Test: atest UpdateOwnershipEnforcementTest
Test: atest ArchiveTest
Test: atest PackageInstallerArchiveTest
Bug: 348131934
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:6354d49da990bad6b17e363237a47dd24c403a3e)
Merged-In: Idd019e3735859cdf80a77c0f547984fa9a8e6197
Change-Id: Idd019e3735859cdf80a77c0f547984fa9a8e6197
parent 3d9d86b4
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -330,7 +330,8 @@ public class PackageInstallerActivity extends Activity {
            // data we still want to count it as "installed".
            mAppInfo = mPm.getApplicationInfo(pkgName,
                    PackageManager.MATCH_UNINSTALLED_PACKAGES);
            if ((mAppInfo.flags&ApplicationInfo.FLAG_INSTALLED) == 0) {
            // If the package is archived, treat it as update case.
            if (!mAppInfo.isArchived && (mAppInfo.flags & ApplicationInfo.FLAG_INSTALLED) == 0) {
                mAppInfo = null;
            }
        } catch (NameNotFoundException e) {
+4 −1
Original line number Diff line number Diff line
@@ -1060,7 +1060,10 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
        final boolean isInstallDpcPackagesPermissionGranted = (snapshot.checkUidPermission(
                android.Manifest.permission.INSTALL_DPC_PACKAGES, mInstallerUid)
                == PackageManager.PERMISSION_GRANTED);
        final int targetPackageUid = snapshot.getPackageUid(packageName, 0, userId);
        // Also query the package uid for archived packages, so that the user confirmation
        // dialog can be displayed for updating archived apps.
        final int targetPackageUid = snapshot.getPackageUid(packageName,
                PackageManager.MATCH_ARCHIVED_PACKAGES, userId);
        final boolean isUpdate = targetPackageUid != -1 || isApexSession();
        final InstallSourceInfo existingInstallSourceInfo = isUpdate
                ? snapshot.getInstallSourceInfo(packageName, userId)