Loading core/api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -12606,6 +12606,7 @@ package android.content.pm { method public boolean isStagedSessionApplied(); method public boolean isStagedSessionFailed(); method public boolean isStagedSessionReady(); method @FlaggedApi("android.content.pm.archiving") public boolean isUnarchival(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.content.pm.PackageInstaller.SessionInfo> CREATOR; field public static final int INVALID_ID = -1; // 0xffffffff core/java/android/content/pm/PackageInstaller.java +11 −0 Original line number Diff line number Diff line Loading @@ -4381,6 +4381,17 @@ public class PackageInstaller { return pendingUserActionReason; } /** * Returns true if the session is an unarchival. * * @see PackageInstaller#requestUnarchive */ @FlaggedApi(Flags.FLAG_ARCHIVING) public boolean isUnarchival() { return (installFlags & PackageManager.INSTALL_UNARCHIVE) != 0; } @Override public int describeContents() { return 0; Loading core/java/android/content/pm/PackageManager.java +11 −1 Original line number Diff line number Diff line Loading @@ -1517,6 +1517,7 @@ public abstract class PackageManager { INSTALL_REQUEST_UPDATE_OWNERSHIP, INSTALL_IGNORE_DEXOPT_PROFILE, INSTALL_UNARCHIVE_DRAFT, INSTALL_UNARCHIVE, }) @Retention(RetentionPolicy.SOURCE) public @interface InstallFlags {} Loading Loading @@ -1764,12 +1765,21 @@ public abstract class PackageManager { * If set, then the session is a draft session created for an upcoming unarchival by its * installer. * * @see PackageInstaller#requestUnarchive(String) * @see PackageInstaller#requestUnarchive * * @hide */ public static final int INSTALL_UNARCHIVE_DRAFT = 1 << 29; /** * If set, then the {@link PackageInstaller.Session} is an unarchival. * * @see PackageInstaller#requestUnarchive * * @hide */ public static final int INSTALL_UNARCHIVE = 1 << 30; /** * Flag parameter for {@link #installPackage} to force a non-staged update of an APEX. This is * a development-only feature and should not be used on end user devices. Loading services/core/java/com/android/server/pm/PackageInstallerService.java +12 −0 Original line number Diff line number Diff line Loading @@ -821,6 +821,18 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements params.installFlags &= ~PackageManager.INSTALL_BYPASS_LOW_TARGET_SDK_BLOCK; } params.installFlags &= ~PackageManager.INSTALL_UNARCHIVE; if (Flags.archiving() && params.appPackageName != null) { PackageStateInternal ps = mPm.snapshotComputer().getPackageStateInternal( params.appPackageName, SYSTEM_UID); if (ps != null && PackageArchiver.isArchived(ps.getUserStateOrDefault(userId)) && PackageArchiver.getResponsibleInstallerPackage(ps) .equals(requestedInstallerPackageName)) { params.installFlags |= PackageManager.INSTALL_UNARCHIVE; } } if ((params.installFlags & PackageManager.INSTALL_INSTANT_APP) != 0 && !PackageManagerServiceUtils.isSystemOrRootOrShell(callingUid) && (snapshot.getFlagsForUid(callingUid) & ApplicationInfo.FLAG_SYSTEM) Loading Loading
core/api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -12606,6 +12606,7 @@ package android.content.pm { method public boolean isStagedSessionApplied(); method public boolean isStagedSessionFailed(); method public boolean isStagedSessionReady(); method @FlaggedApi("android.content.pm.archiving") public boolean isUnarchival(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.content.pm.PackageInstaller.SessionInfo> CREATOR; field public static final int INVALID_ID = -1; // 0xffffffff
core/java/android/content/pm/PackageInstaller.java +11 −0 Original line number Diff line number Diff line Loading @@ -4381,6 +4381,17 @@ public class PackageInstaller { return pendingUserActionReason; } /** * Returns true if the session is an unarchival. * * @see PackageInstaller#requestUnarchive */ @FlaggedApi(Flags.FLAG_ARCHIVING) public boolean isUnarchival() { return (installFlags & PackageManager.INSTALL_UNARCHIVE) != 0; } @Override public int describeContents() { return 0; Loading
core/java/android/content/pm/PackageManager.java +11 −1 Original line number Diff line number Diff line Loading @@ -1517,6 +1517,7 @@ public abstract class PackageManager { INSTALL_REQUEST_UPDATE_OWNERSHIP, INSTALL_IGNORE_DEXOPT_PROFILE, INSTALL_UNARCHIVE_DRAFT, INSTALL_UNARCHIVE, }) @Retention(RetentionPolicy.SOURCE) public @interface InstallFlags {} Loading Loading @@ -1764,12 +1765,21 @@ public abstract class PackageManager { * If set, then the session is a draft session created for an upcoming unarchival by its * installer. * * @see PackageInstaller#requestUnarchive(String) * @see PackageInstaller#requestUnarchive * * @hide */ public static final int INSTALL_UNARCHIVE_DRAFT = 1 << 29; /** * If set, then the {@link PackageInstaller.Session} is an unarchival. * * @see PackageInstaller#requestUnarchive * * @hide */ public static final int INSTALL_UNARCHIVE = 1 << 30; /** * Flag parameter for {@link #installPackage} to force a non-staged update of an APEX. This is * a development-only feature and should not be used on end user devices. Loading
services/core/java/com/android/server/pm/PackageInstallerService.java +12 −0 Original line number Diff line number Diff line Loading @@ -821,6 +821,18 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements params.installFlags &= ~PackageManager.INSTALL_BYPASS_LOW_TARGET_SDK_BLOCK; } params.installFlags &= ~PackageManager.INSTALL_UNARCHIVE; if (Flags.archiving() && params.appPackageName != null) { PackageStateInternal ps = mPm.snapshotComputer().getPackageStateInternal( params.appPackageName, SYSTEM_UID); if (ps != null && PackageArchiver.isArchived(ps.getUserStateOrDefault(userId)) && PackageArchiver.getResponsibleInstallerPackage(ps) .equals(requestedInstallerPackageName)) { params.installFlags |= PackageManager.INSTALL_UNARCHIVE; } } if ((params.installFlags & PackageManager.INSTALL_INSTANT_APP) != 0 && !PackageManagerServiceUtils.isSystemOrRootOrShell(callingUid) && (snapshot.getFlagsForUid(callingUid) & ApplicationInfo.FLAG_SYSTEM) Loading