Loading core/api/system-current.txt +4 −0 Original line number Diff line number Diff line Loading @@ -3861,6 +3861,10 @@ package android.content.pm { field @RequiresPermission(android.Manifest.permission.ACCESS_SHORTCUTS) public static final int FLAG_GET_PERSONS_DATA = 2048; // 0x800 } public class PackageInfo implements android.os.Parcelable { method @FlaggedApi("android.content.pm.archiving") public long getArchiveTimeMillis(); } public class PackageInstaller { method @NonNull public android.content.pm.PackageInstaller.InstallInfo readInstallInfo(@NonNull java.io.File, int) throws android.content.pm.PackageInstaller.PackageParsingException; method @NonNull public android.content.pm.PackageInstaller.InstallInfo readInstallInfo(@NonNull android.os.ParcelFileDescriptor, @Nullable String, int) throws android.content.pm.PackageInstaller.PackageParsingException; core/java/android/content/pm/PackageInfo.java +31 −0 Original line number Diff line number Diff line Loading @@ -16,8 +16,11 @@ package android.content.pm; import android.annotation.CurrentTimeMillisLong; import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SystemApi; import android.compat.annotation.UnsupportedAppUsage; import android.os.Build; import android.os.Parcel; Loading Loading @@ -243,6 +246,14 @@ public class PackageInfo implements Parcelable { @Nullable public Attribution[] attributions; /** * The time at which the app was archived for the user. Units are as * per {@link System#currentTimeMillis()}. * @hide */ @CurrentTimeMillisLong private long mArchiveTimeMillis; /** * Flag for {@link #requestedPermissionsFlags}: the requested permission * is required for the application to run; the user can not optionally Loading Loading @@ -508,6 +519,24 @@ public class PackageInfo implements Parcelable { return overlayTarget != null && mOverlayIsStatic; } /** * Returns the time at which the app was archived for the user. Units are as * per {@link System#currentTimeMillis()}. * @hide */ @SystemApi @FlaggedApi(Flags.FLAG_ARCHIVING) public @CurrentTimeMillisLong long getArchiveTimeMillis() { return mArchiveTimeMillis; } /** * @hide */ public void setArchiveTimeMillis(@CurrentTimeMillisLong long value) { mArchiveTimeMillis = value; } @Override public String toString() { return "PackageInfo{" Loading Loading @@ -575,6 +604,7 @@ public class PackageInfo implements Parcelable { } dest.writeBoolean(isApex); dest.writeBoolean(isActiveApex); dest.writeLong(mArchiveTimeMillis); dest.restoreAllowSquashing(prevAllowSquashing); } Loading Loading @@ -640,5 +670,6 @@ public class PackageInfo implements Parcelable { } isApex = source.readBoolean(); isActiveApex = source.readBoolean(); mArchiveTimeMillis = source.readLong(); } } services/core/java/com/android/server/pm/ComputerEngine.java +1 −0 Original line number Diff line number Diff line Loading @@ -1533,6 +1533,7 @@ public class ComputerEngine implements Computer { ai, flags, state, userId); pi.signingInfo = ps.getSigningInfo(); pi.signatures = getDeprecatedSignatures(pi.signingInfo.getSigningDetails(), flags); pi.setArchiveTimeMillis(state.getArchiveTimeMillis()); if (DEBUG_PACKAGE_INFO) { Log.v(TAG, "ps.pkg is n/a for [" Loading services/core/java/com/android/server/pm/DeletePackageHelper.java +5 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS; import static android.content.pm.Flags.sdkLibIndependence; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED; import static android.content.pm.PackageManager.DELETE_ARCHIVE; import static android.content.pm.PackageManager.DELETE_KEEP_DATA; import static android.content.pm.PackageManager.DELETE_SUCCEEDED; import static android.content.pm.PackageManager.MATCH_KNOWN_PACKAGES; Loading Loading @@ -606,6 +607,10 @@ final class DeletePackageHelper { firstInstallTime, PackageManager.USER_MIN_ASPECT_RATIO_UNSET, archiveState); if ((flags & DELETE_ARCHIVE) != 0) { ps.modifyUserState(nextUserId).setArchiveTimeMillis(System.currentTimeMillis()); } } mPm.mSettings.writeKernelMappingLPr(ps); } Loading services/core/java/com/android/server/pm/PackageSetting.java +5 −0 Original line number Diff line number Diff line Loading @@ -770,6 +770,11 @@ public class PackageSetting extends SettingBase implements PackageStateInternal onChanged(); } void setArchiveTimeMillis(long value, int userId) { modifyUserState(userId).setArchiveTimeMillis(value); onChanged(); } boolean getInstalled(int userId) { return readUserState(userId).isInstalled(); } Loading Loading
core/api/system-current.txt +4 −0 Original line number Diff line number Diff line Loading @@ -3861,6 +3861,10 @@ package android.content.pm { field @RequiresPermission(android.Manifest.permission.ACCESS_SHORTCUTS) public static final int FLAG_GET_PERSONS_DATA = 2048; // 0x800 } public class PackageInfo implements android.os.Parcelable { method @FlaggedApi("android.content.pm.archiving") public long getArchiveTimeMillis(); } public class PackageInstaller { method @NonNull public android.content.pm.PackageInstaller.InstallInfo readInstallInfo(@NonNull java.io.File, int) throws android.content.pm.PackageInstaller.PackageParsingException; method @NonNull public android.content.pm.PackageInstaller.InstallInfo readInstallInfo(@NonNull android.os.ParcelFileDescriptor, @Nullable String, int) throws android.content.pm.PackageInstaller.PackageParsingException;
core/java/android/content/pm/PackageInfo.java +31 −0 Original line number Diff line number Diff line Loading @@ -16,8 +16,11 @@ package android.content.pm; import android.annotation.CurrentTimeMillisLong; import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SystemApi; import android.compat.annotation.UnsupportedAppUsage; import android.os.Build; import android.os.Parcel; Loading Loading @@ -243,6 +246,14 @@ public class PackageInfo implements Parcelable { @Nullable public Attribution[] attributions; /** * The time at which the app was archived for the user. Units are as * per {@link System#currentTimeMillis()}. * @hide */ @CurrentTimeMillisLong private long mArchiveTimeMillis; /** * Flag for {@link #requestedPermissionsFlags}: the requested permission * is required for the application to run; the user can not optionally Loading Loading @@ -508,6 +519,24 @@ public class PackageInfo implements Parcelable { return overlayTarget != null && mOverlayIsStatic; } /** * Returns the time at which the app was archived for the user. Units are as * per {@link System#currentTimeMillis()}. * @hide */ @SystemApi @FlaggedApi(Flags.FLAG_ARCHIVING) public @CurrentTimeMillisLong long getArchiveTimeMillis() { return mArchiveTimeMillis; } /** * @hide */ public void setArchiveTimeMillis(@CurrentTimeMillisLong long value) { mArchiveTimeMillis = value; } @Override public String toString() { return "PackageInfo{" Loading Loading @@ -575,6 +604,7 @@ public class PackageInfo implements Parcelable { } dest.writeBoolean(isApex); dest.writeBoolean(isActiveApex); dest.writeLong(mArchiveTimeMillis); dest.restoreAllowSquashing(prevAllowSquashing); } Loading Loading @@ -640,5 +670,6 @@ public class PackageInfo implements Parcelable { } isApex = source.readBoolean(); isActiveApex = source.readBoolean(); mArchiveTimeMillis = source.readLong(); } }
services/core/java/com/android/server/pm/ComputerEngine.java +1 −0 Original line number Diff line number Diff line Loading @@ -1533,6 +1533,7 @@ public class ComputerEngine implements Computer { ai, flags, state, userId); pi.signingInfo = ps.getSigningInfo(); pi.signatures = getDeprecatedSignatures(pi.signingInfo.getSigningDetails(), flags); pi.setArchiveTimeMillis(state.getArchiveTimeMillis()); if (DEBUG_PACKAGE_INFO) { Log.v(TAG, "ps.pkg is n/a for [" Loading
services/core/java/com/android/server/pm/DeletePackageHelper.java +5 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS; import static android.content.pm.Flags.sdkLibIndependence; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED; import static android.content.pm.PackageManager.DELETE_ARCHIVE; import static android.content.pm.PackageManager.DELETE_KEEP_DATA; import static android.content.pm.PackageManager.DELETE_SUCCEEDED; import static android.content.pm.PackageManager.MATCH_KNOWN_PACKAGES; Loading Loading @@ -606,6 +607,10 @@ final class DeletePackageHelper { firstInstallTime, PackageManager.USER_MIN_ASPECT_RATIO_UNSET, archiveState); if ((flags & DELETE_ARCHIVE) != 0) { ps.modifyUserState(nextUserId).setArchiveTimeMillis(System.currentTimeMillis()); } } mPm.mSettings.writeKernelMappingLPr(ps); } Loading
services/core/java/com/android/server/pm/PackageSetting.java +5 −0 Original line number Diff line number Diff line Loading @@ -770,6 +770,11 @@ public class PackageSetting extends SettingBase implements PackageStateInternal onChanged(); } void setArchiveTimeMillis(long value, int userId) { modifyUserState(userId).setArchiveTimeMillis(value); onChanged(); } boolean getInstalled(int userId) { return readUserState(userId).isInstalled(); } Loading