Loading core/api/system-current.txt +4 −0 Original line number Diff line number Diff line Loading @@ -3959,6 +3959,7 @@ package android.content.pm { method public void setInstallAsInstantApp(boolean); method public void setInstallAsVirtualPreload(); method public void setRequestDowngrade(boolean); method @FlaggedApi("android.content.pm.recoverability_detection") @RequiresPermission(android.Manifest.permission.MANAGE_ROLLBACKS) public void setRollbackImpactLevel(int); method @FlaggedApi("android.content.pm.rollback_lifetime") @RequiresPermission(android.Manifest.permission.MANAGE_ROLLBACKS) public void setRollbackLifetimeMillis(long); method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setStaged(); } Loading Loading @@ -4127,6 +4128,9 @@ package android.content.pm { field public static final int ROLLBACK_DATA_POLICY_RESTORE = 0; // 0x0 field public static final int ROLLBACK_DATA_POLICY_RETAIN = 2; // 0x2 field public static final int ROLLBACK_DATA_POLICY_WIPE = 1; // 0x1 field @FlaggedApi("android.content.pm.recoverability_detection") public static final int ROLLBACK_USER_IMPACT_HIGH = 1; // 0x1 field @FlaggedApi("android.content.pm.recoverability_detection") public static final int ROLLBACK_USER_IMPACT_LOW = 0; // 0x0 field @FlaggedApi("android.content.pm.recoverability_detection") public static final int ROLLBACK_USER_IMPACT_ONLY_MANUAL = 2; // 0x2 field public static final int SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN = 0; // 0x0 field public static final int SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_VISIBLE = 1; // 0x1 field public static final int SYSTEM_APP_STATE_INSTALLED = 2; // 0x2 core/api/test-current.txt +4 −0 Original line number Diff line number Diff line Loading @@ -1210,6 +1210,10 @@ package android.content.res { package android.content.rollback { public final class RollbackInfo implements android.os.Parcelable { method @FlaggedApi("android.content.pm.recoverability_detection") public int getRollbackImpactLevel(); } public final class RollbackManager { method @RequiresPermission(android.Manifest.permission.TEST_MANAGE_ROLLBACKS) public void blockRollbackManager(long); method @RequiresPermission(android.Manifest.permission.TEST_MANAGE_ROLLBACKS) public void expireRollbackForPackage(@NonNull String); Loading core/java/android/content/pm/PackageInstaller.java +33 −0 Original line number Diff line number Diff line Loading @@ -2693,6 +2693,8 @@ public class PackageInstaller { /** @hide */ public long rollbackLifetimeMillis = 0; /** {@hide} */ public int rollbackImpactLevel = PackageManager.ROLLBACK_USER_IMPACT_LOW; /** {@hide} */ public boolean forceQueryableOverride; /** {@hide} */ public int requireUserAction = USER_ACTION_UNSPECIFIED; Loading Loading @@ -2749,6 +2751,7 @@ public class PackageInstaller { } rollbackDataPolicy = source.readInt(); rollbackLifetimeMillis = source.readLong(); rollbackImpactLevel = source.readInt(); requireUserAction = source.readInt(); packageSource = source.readInt(); applicationEnabledSettingPersistent = source.readBoolean(); Loading Loading @@ -2783,6 +2786,7 @@ public class PackageInstaller { ret.dataLoaderParams = dataLoaderParams; ret.rollbackDataPolicy = rollbackDataPolicy; ret.rollbackLifetimeMillis = rollbackLifetimeMillis; ret.rollbackImpactLevel = rollbackImpactLevel; ret.requireUserAction = requireUserAction; ret.packageSource = packageSource; ret.applicationEnabledSettingPersistent = applicationEnabledSettingPersistent; Loading Loading @@ -3120,6 +3124,28 @@ public class PackageInstaller { rollbackLifetimeMillis = lifetimeMillis; } /** * rollbackImpactLevel is a measure of impact a rollback has on the user. This can take one * of 3 values: * <ul> * <li>{@link PackageManager#ROLLBACK_USER_IMPACT_LOW} (default)</li> * <li>{@link PackageManager#ROLLBACK_USER_IMPACT_HIGH} (1)</li> * <li>{@link PackageManager#ROLLBACK_USER_IMPACT_ONLY_MANUAL} (2)</li> * </ul> * * @hide */ @SystemApi @RequiresPermission(android.Manifest.permission.MANAGE_ROLLBACKS) @FlaggedApi(Flags.FLAG_RECOVERABILITY_DETECTION) public void setRollbackImpactLevel(@PackageManager.RollbackImpactLevel int impactLevel) { if ((installFlags & PackageManager.INSTALL_ENABLE_ROLLBACK) == 0) { throw new IllegalArgumentException( "Can't set rollbackImpactLevel when rollback is not enabled"); } rollbackImpactLevel = impactLevel; } /** * @deprecated use {@link #setRequestDowngrade(boolean)}. * {@hide} Loading Loading @@ -3493,6 +3519,7 @@ public class PackageInstaller { pw.printPair("dataLoaderParams", dataLoaderParams); pw.printPair("rollbackDataPolicy", rollbackDataPolicy); pw.printPair("rollbackLifetimeMillis", rollbackLifetimeMillis); pw.printPair("rollbackImpactLevel", rollbackImpactLevel); pw.printPair("applicationEnabledSettingPersistent", applicationEnabledSettingPersistent); pw.printHexPair("developmentInstallFlags", developmentInstallFlags); Loading Loading @@ -3536,6 +3563,7 @@ public class PackageInstaller { } dest.writeInt(rollbackDataPolicy); dest.writeLong(rollbackLifetimeMillis); dest.writeInt(rollbackImpactLevel); dest.writeInt(requireUserAction); dest.writeInt(packageSource); dest.writeBoolean(applicationEnabledSettingPersistent); Loading Loading @@ -3733,6 +3761,9 @@ public class PackageInstaller { /** @hide */ public long rollbackLifetimeMillis; /** {@hide} */ public int rollbackImpactLevel; /** {@hide} */ public int requireUserAction; Loading Loading @@ -3801,6 +3832,7 @@ public class PackageInstaller { isPreapprovalRequested = source.readBoolean(); rollbackDataPolicy = source.readInt(); rollbackLifetimeMillis = source.readLong(); rollbackImpactLevel = source.readInt(); createdMillis = source.readLong(); requireUserAction = source.readInt(); installerUid = source.readInt(); Loading Loading @@ -4438,6 +4470,7 @@ public class PackageInstaller { dest.writeBoolean(isPreapprovalRequested); dest.writeInt(rollbackDataPolicy); dest.writeLong(rollbackLifetimeMillis); dest.writeInt(rollbackImpactLevel); dest.writeLong(createdMillis); dest.writeInt(requireUserAction); dest.writeInt(installerUid); Loading core/java/android/content/pm/PackageManager.java +38 −0 Original line number Diff line number Diff line Loading @@ -1500,6 +1500,44 @@ public abstract class PackageManager { @SystemApi public static final int ROLLBACK_DATA_POLICY_RETAIN = 2; /** @hide */ @IntDef(prefix = {"ROLLBACK_USER_IMPACT_"}, value = { ROLLBACK_USER_IMPACT_LOW, ROLLBACK_USER_IMPACT_HIGH, ROLLBACK_USER_IMPACT_ONLY_MANUAL, }) @Retention(RetentionPolicy.SOURCE) public @interface RollbackImpactLevel {} /** * Rollback will be performed automatically in response to native crashes on startup or * persistent service crashes. More suitable for apps that do not store any user data. * * @hide */ @SystemApi @FlaggedApi(android.content.pm.Flags.FLAG_RECOVERABILITY_DETECTION) public static final int ROLLBACK_USER_IMPACT_LOW = 0; /** * Rollback will be performed automatically only when the device is found to be unrecoverable. * More suitable for apps that store user data and have higher impact on user. * * @hide */ @SystemApi @FlaggedApi(android.content.pm.Flags.FLAG_RECOVERABILITY_DETECTION) public static final int ROLLBACK_USER_IMPACT_HIGH = 1; /** * Rollback will not be performed automatically. It can be triggered externally. * * @hide */ @SystemApi @FlaggedApi(android.content.pm.Flags.FLAG_RECOVERABILITY_DETECTION) public static final int ROLLBACK_USER_IMPACT_ONLY_MANUAL = 2; /** @hide */ @IntDef(flag = true, prefix = { "INSTALL_" }, value = { INSTALL_REPLACE_EXISTING, Loading core/java/android/content/pm/flags.aconfig +7 −0 Original line number Diff line number Diff line Loading @@ -146,3 +146,10 @@ flag { bug: "281848623" } flag { name: "recoverability_detection" namespace: "package_manager_service" description: "Feature flag to enable recoverability detection feature. It includes GMS core rollback and improvements to rescue party." bug: "291135724" is_fixed_read_only: true } Loading
core/api/system-current.txt +4 −0 Original line number Diff line number Diff line Loading @@ -3959,6 +3959,7 @@ package android.content.pm { method public void setInstallAsInstantApp(boolean); method public void setInstallAsVirtualPreload(); method public void setRequestDowngrade(boolean); method @FlaggedApi("android.content.pm.recoverability_detection") @RequiresPermission(android.Manifest.permission.MANAGE_ROLLBACKS) public void setRollbackImpactLevel(int); method @FlaggedApi("android.content.pm.rollback_lifetime") @RequiresPermission(android.Manifest.permission.MANAGE_ROLLBACKS) public void setRollbackLifetimeMillis(long); method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setStaged(); } Loading Loading @@ -4127,6 +4128,9 @@ package android.content.pm { field public static final int ROLLBACK_DATA_POLICY_RESTORE = 0; // 0x0 field public static final int ROLLBACK_DATA_POLICY_RETAIN = 2; // 0x2 field public static final int ROLLBACK_DATA_POLICY_WIPE = 1; // 0x1 field @FlaggedApi("android.content.pm.recoverability_detection") public static final int ROLLBACK_USER_IMPACT_HIGH = 1; // 0x1 field @FlaggedApi("android.content.pm.recoverability_detection") public static final int ROLLBACK_USER_IMPACT_LOW = 0; // 0x0 field @FlaggedApi("android.content.pm.recoverability_detection") public static final int ROLLBACK_USER_IMPACT_ONLY_MANUAL = 2; // 0x2 field public static final int SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN = 0; // 0x0 field public static final int SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_VISIBLE = 1; // 0x1 field public static final int SYSTEM_APP_STATE_INSTALLED = 2; // 0x2
core/api/test-current.txt +4 −0 Original line number Diff line number Diff line Loading @@ -1210,6 +1210,10 @@ package android.content.res { package android.content.rollback { public final class RollbackInfo implements android.os.Parcelable { method @FlaggedApi("android.content.pm.recoverability_detection") public int getRollbackImpactLevel(); } public final class RollbackManager { method @RequiresPermission(android.Manifest.permission.TEST_MANAGE_ROLLBACKS) public void blockRollbackManager(long); method @RequiresPermission(android.Manifest.permission.TEST_MANAGE_ROLLBACKS) public void expireRollbackForPackage(@NonNull String); Loading
core/java/android/content/pm/PackageInstaller.java +33 −0 Original line number Diff line number Diff line Loading @@ -2693,6 +2693,8 @@ public class PackageInstaller { /** @hide */ public long rollbackLifetimeMillis = 0; /** {@hide} */ public int rollbackImpactLevel = PackageManager.ROLLBACK_USER_IMPACT_LOW; /** {@hide} */ public boolean forceQueryableOverride; /** {@hide} */ public int requireUserAction = USER_ACTION_UNSPECIFIED; Loading Loading @@ -2749,6 +2751,7 @@ public class PackageInstaller { } rollbackDataPolicy = source.readInt(); rollbackLifetimeMillis = source.readLong(); rollbackImpactLevel = source.readInt(); requireUserAction = source.readInt(); packageSource = source.readInt(); applicationEnabledSettingPersistent = source.readBoolean(); Loading Loading @@ -2783,6 +2786,7 @@ public class PackageInstaller { ret.dataLoaderParams = dataLoaderParams; ret.rollbackDataPolicy = rollbackDataPolicy; ret.rollbackLifetimeMillis = rollbackLifetimeMillis; ret.rollbackImpactLevel = rollbackImpactLevel; ret.requireUserAction = requireUserAction; ret.packageSource = packageSource; ret.applicationEnabledSettingPersistent = applicationEnabledSettingPersistent; Loading Loading @@ -3120,6 +3124,28 @@ public class PackageInstaller { rollbackLifetimeMillis = lifetimeMillis; } /** * rollbackImpactLevel is a measure of impact a rollback has on the user. This can take one * of 3 values: * <ul> * <li>{@link PackageManager#ROLLBACK_USER_IMPACT_LOW} (default)</li> * <li>{@link PackageManager#ROLLBACK_USER_IMPACT_HIGH} (1)</li> * <li>{@link PackageManager#ROLLBACK_USER_IMPACT_ONLY_MANUAL} (2)</li> * </ul> * * @hide */ @SystemApi @RequiresPermission(android.Manifest.permission.MANAGE_ROLLBACKS) @FlaggedApi(Flags.FLAG_RECOVERABILITY_DETECTION) public void setRollbackImpactLevel(@PackageManager.RollbackImpactLevel int impactLevel) { if ((installFlags & PackageManager.INSTALL_ENABLE_ROLLBACK) == 0) { throw new IllegalArgumentException( "Can't set rollbackImpactLevel when rollback is not enabled"); } rollbackImpactLevel = impactLevel; } /** * @deprecated use {@link #setRequestDowngrade(boolean)}. * {@hide} Loading Loading @@ -3493,6 +3519,7 @@ public class PackageInstaller { pw.printPair("dataLoaderParams", dataLoaderParams); pw.printPair("rollbackDataPolicy", rollbackDataPolicy); pw.printPair("rollbackLifetimeMillis", rollbackLifetimeMillis); pw.printPair("rollbackImpactLevel", rollbackImpactLevel); pw.printPair("applicationEnabledSettingPersistent", applicationEnabledSettingPersistent); pw.printHexPair("developmentInstallFlags", developmentInstallFlags); Loading Loading @@ -3536,6 +3563,7 @@ public class PackageInstaller { } dest.writeInt(rollbackDataPolicy); dest.writeLong(rollbackLifetimeMillis); dest.writeInt(rollbackImpactLevel); dest.writeInt(requireUserAction); dest.writeInt(packageSource); dest.writeBoolean(applicationEnabledSettingPersistent); Loading Loading @@ -3733,6 +3761,9 @@ public class PackageInstaller { /** @hide */ public long rollbackLifetimeMillis; /** {@hide} */ public int rollbackImpactLevel; /** {@hide} */ public int requireUserAction; Loading Loading @@ -3801,6 +3832,7 @@ public class PackageInstaller { isPreapprovalRequested = source.readBoolean(); rollbackDataPolicy = source.readInt(); rollbackLifetimeMillis = source.readLong(); rollbackImpactLevel = source.readInt(); createdMillis = source.readLong(); requireUserAction = source.readInt(); installerUid = source.readInt(); Loading Loading @@ -4438,6 +4470,7 @@ public class PackageInstaller { dest.writeBoolean(isPreapprovalRequested); dest.writeInt(rollbackDataPolicy); dest.writeLong(rollbackLifetimeMillis); dest.writeInt(rollbackImpactLevel); dest.writeLong(createdMillis); dest.writeInt(requireUserAction); dest.writeInt(installerUid); Loading
core/java/android/content/pm/PackageManager.java +38 −0 Original line number Diff line number Diff line Loading @@ -1500,6 +1500,44 @@ public abstract class PackageManager { @SystemApi public static final int ROLLBACK_DATA_POLICY_RETAIN = 2; /** @hide */ @IntDef(prefix = {"ROLLBACK_USER_IMPACT_"}, value = { ROLLBACK_USER_IMPACT_LOW, ROLLBACK_USER_IMPACT_HIGH, ROLLBACK_USER_IMPACT_ONLY_MANUAL, }) @Retention(RetentionPolicy.SOURCE) public @interface RollbackImpactLevel {} /** * Rollback will be performed automatically in response to native crashes on startup or * persistent service crashes. More suitable for apps that do not store any user data. * * @hide */ @SystemApi @FlaggedApi(android.content.pm.Flags.FLAG_RECOVERABILITY_DETECTION) public static final int ROLLBACK_USER_IMPACT_LOW = 0; /** * Rollback will be performed automatically only when the device is found to be unrecoverable. * More suitable for apps that store user data and have higher impact on user. * * @hide */ @SystemApi @FlaggedApi(android.content.pm.Flags.FLAG_RECOVERABILITY_DETECTION) public static final int ROLLBACK_USER_IMPACT_HIGH = 1; /** * Rollback will not be performed automatically. It can be triggered externally. * * @hide */ @SystemApi @FlaggedApi(android.content.pm.Flags.FLAG_RECOVERABILITY_DETECTION) public static final int ROLLBACK_USER_IMPACT_ONLY_MANUAL = 2; /** @hide */ @IntDef(flag = true, prefix = { "INSTALL_" }, value = { INSTALL_REPLACE_EXISTING, Loading
core/java/android/content/pm/flags.aconfig +7 −0 Original line number Diff line number Diff line Loading @@ -146,3 +146,10 @@ flag { bug: "281848623" } flag { name: "recoverability_detection" namespace: "package_manager_service" description: "Feature flag to enable recoverability detection feature. It includes GMS core rollback and improvements to rescue party." bug: "291135724" is_fixed_read_only: true }