Loading packages/PackageInstaller/src/com/android/packageinstaller/handheld/UninstallAlertDialogFragment.java +7 −1 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import android.content.pm.PackageManager; import android.os.Bundle; import android.os.Flags; import android.os.Process; import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserManager; import android.util.Log; Loading Loading @@ -131,7 +132,7 @@ public class UninstallAlertDialogFragment extends DialogFragment implements final boolean isUpdate = ((dialogInfo.appInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0); final boolean isArchive = android.content.pm.Flags.archiving() && ( isArchivingEnabled() && ( (dialogInfo.deleteFlags & PackageManager.DELETE_ARCHIVE) != 0); final UserHandle myUserHandle = Process.myUserHandle(); UserManager userManager = getContext().getSystemService(UserManager.class); Loading Loading @@ -242,6 +243,11 @@ public class UninstallAlertDialogFragment extends DialogFragment implements return dialogBuilder.create(); } private static boolean isArchivingEnabled() { return android.content.pm.Flags.archiving() || SystemProperties.getBoolean("pm.archiving.enabled", false); } private boolean isCloneProfile(UserHandle userHandle) { UserManager customUserManager = getContext() .createContextAsUser(UserHandle.of(userHandle.getIdentifier()), 0) Loading packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppListRepository.kt +5 −1 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.content.pm.ApplicationInfo import android.content.pm.PackageManager import android.content.pm.PackageManager.ApplicationInfoFlags import android.content.pm.ResolveInfo import android.os.SystemProperties import com.android.internal.R import com.android.settingslib.spaprivileged.framework.common.userManager import kotlinx.coroutines.async Loading Loading @@ -110,7 +111,7 @@ class AppListRepositoryImpl( ): List<ApplicationInfo> { val disabledComponentsFlag = (PackageManager.MATCH_DISABLED_COMPONENTS or PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS).toLong() val archivedPackagesFlag: Long = if (featureFlags.archiving()) val archivedPackagesFlag: Long = if (isArchivingEnabled(featureFlags)) PackageManager.MATCH_ARCHIVED_PACKAGES else 0L val regularFlags = ApplicationInfoFlags.of( disabledComponentsFlag or Loading Loading @@ -148,6 +149,9 @@ class AppListRepositoryImpl( } } private fun isArchivingEnabled(featureFlags: FeatureFlags) = featureFlags.archiving() || SystemProperties.getBoolean("pm.archiving.enabled", false) override fun showSystemPredicate( userIdFlow: Flow<Int>, showSystemFlow: Flow<Boolean>, Loading services/core/java/com/android/server/pm/LauncherAppsService.java +9 −7 Original line number Diff line number Diff line Loading @@ -32,6 +32,8 @@ import static android.content.pm.LauncherApps.FLAG_CACHE_BUBBLE_SHORTCUTS; import static android.content.pm.LauncherApps.FLAG_CACHE_NOTIFICATION_SHORTCUTS; import static android.content.pm.LauncherApps.FLAG_CACHE_PEOPLE_TILE_SHORTCUTS; import static com.android.server.pm.PackageArchiver.isArchivingEnabled; import android.annotation.AppIdInt; import android.annotation.NonNull; import android.annotation.Nullable; Loading @@ -56,7 +58,6 @@ import android.content.IntentSender; import android.content.LocusId; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.pm.Flags; import android.content.pm.ILauncherApps; import android.content.pm.IOnAppsChangedListener; import android.content.pm.IPackageInstallerCallback; Loading Loading @@ -507,7 +508,8 @@ public class LauncherAppsService extends SystemService { if (!canAccessProfile(userId, "cannot get shouldHideFromSuggestions")) { return false; } if (Flags.archiving() && packageName != null && isPackageArchived(packageName, user)) { if (isArchivingEnabled() && packageName != null && isPackageArchived(packageName, user)) { return true; } if (mPackageManagerInternal.filterAppAccess( Loading @@ -530,7 +532,7 @@ public class LauncherAppsService extends SystemService { .addCategory(Intent.CATEGORY_LAUNCHER) .setPackage(packageName), user); if (Flags.archiving()) { if (isArchivingEnabled()) { launcherActivities = getActivitiesForArchivedApp(packageName, user, launcherActivities); } Loading Loading @@ -701,7 +703,7 @@ public class LauncherAppsService extends SystemService { callingUid, user.getIdentifier()); if (activityInfo == null) { if (Flags.archiving()) { if (isArchivingEnabled()) { return getMatchingArchivedAppActivityInfo(component, user); } return null; Loading Loading @@ -984,7 +986,7 @@ public class LauncherAppsService extends SystemService { long callingFlag = PackageManager.MATCH_DIRECT_BOOT_AWARE | PackageManager.MATCH_DIRECT_BOOT_UNAWARE; if (Flags.archiving()) { if (isArchivingEnabled()) { callingFlag |= PackageManager.MATCH_ARCHIVED_PACKAGES; } final PackageInfo info = Loading Loading @@ -1457,7 +1459,7 @@ public class LauncherAppsService extends SystemService { if (!canAccessProfile(user.getIdentifier(), "Cannot check component")) { return false; } if (Flags.archiving() && component != null && component.getPackageName() != null) { if (isArchivingEnabled() && component != null && component.getPackageName() != null) { List<LauncherActivityInfoInternal> archiveActivities = generateLauncherActivitiesForArchivedApp(component.getPackageName(), user); if (!archiveActivities.isEmpty()) { Loading Loading @@ -1788,7 +1790,7 @@ public class LauncherAppsService extends SystemService { } if (!canLaunch && includeArchivedApps && Flags.archiving() && isArchivingEnabled() && getMatchingArchivedAppActivityInfo(component, user) != null) { launchIntent.setPackage(null); launchIntent.setComponent(component); Loading services/core/java/com/android/server/pm/PackageArchiver.java +6 −0 Original line number Diff line number Diff line Loading @@ -53,6 +53,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.ArchivedActivityParcel; import android.content.pm.ArchivedPackageInfo; import android.content.pm.ArchivedPackageParcel; import android.content.pm.Flags; import android.content.pm.LauncherActivityInfo; import android.content.pm.LauncherApps; import android.content.pm.PackageInstaller; Loading @@ -78,6 +79,7 @@ import android.os.ParcelableException; import android.os.Process; import android.os.RemoteException; import android.os.SELinux; import android.os.SystemProperties; import android.os.UserHandle; import android.text.TextUtils; import android.util.ExceptionUtils; Loading Loading @@ -173,6 +175,10 @@ public class PackageArchiver { return userState.getArchiveState() != null && !userState.isInstalled(); } public static boolean isArchivingEnabled() { return Flags.archiving() || SystemProperties.getBoolean("pm.archiving.enabled", false); } void requestArchive( @NonNull String packageName, @NonNull String callerPackageName, Loading services/core/java/com/android/server/pm/PackageInstallerService.java +3 −2 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import static android.content.pm.PackageManager.INSTALL_UNARCHIVE_DRAFT; import static android.os.Process.INVALID_UID; import static android.os.Process.SYSTEM_UID; import static com.android.server.pm.PackageArchiver.isArchivingEnabled; import static com.android.server.pm.PackageManagerService.SHELL_PACKAGE_NAME; import static org.xmlpull.v1.XmlPullParser.END_DOCUMENT; Loading Loading @@ -826,7 +827,7 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements } params.installFlags &= ~PackageManager.INSTALL_UNARCHIVE; if (Flags.archiving() && params.appPackageName != null) { if (isArchivingEnabled() && params.appPackageName != null) { PackageStateInternal ps = mPm.snapshotComputer().getPackageStateInternal( params.appPackageName, SYSTEM_UID); if (ps != null Loading Loading @@ -1034,7 +1035,7 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements private int getExistingDraftSessionIdInternal(int installerUid, SessionParams sessionParams, int userId) { String appPackageName = sessionParams.appPackageName; if (!Flags.archiving() || installerUid == INVALID_UID || appPackageName == null) { if (!isArchivingEnabled() || installerUid == INVALID_UID || appPackageName == null) { return SessionInfo.INVALID_ID; } Loading Loading
packages/PackageInstaller/src/com/android/packageinstaller/handheld/UninstallAlertDialogFragment.java +7 −1 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import android.content.pm.PackageManager; import android.os.Bundle; import android.os.Flags; import android.os.Process; import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserManager; import android.util.Log; Loading Loading @@ -131,7 +132,7 @@ public class UninstallAlertDialogFragment extends DialogFragment implements final boolean isUpdate = ((dialogInfo.appInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0); final boolean isArchive = android.content.pm.Flags.archiving() && ( isArchivingEnabled() && ( (dialogInfo.deleteFlags & PackageManager.DELETE_ARCHIVE) != 0); final UserHandle myUserHandle = Process.myUserHandle(); UserManager userManager = getContext().getSystemService(UserManager.class); Loading Loading @@ -242,6 +243,11 @@ public class UninstallAlertDialogFragment extends DialogFragment implements return dialogBuilder.create(); } private static boolean isArchivingEnabled() { return android.content.pm.Flags.archiving() || SystemProperties.getBoolean("pm.archiving.enabled", false); } private boolean isCloneProfile(UserHandle userHandle) { UserManager customUserManager = getContext() .createContextAsUser(UserHandle.of(userHandle.getIdentifier()), 0) Loading
packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppListRepository.kt +5 −1 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.content.pm.ApplicationInfo import android.content.pm.PackageManager import android.content.pm.PackageManager.ApplicationInfoFlags import android.content.pm.ResolveInfo import android.os.SystemProperties import com.android.internal.R import com.android.settingslib.spaprivileged.framework.common.userManager import kotlinx.coroutines.async Loading Loading @@ -110,7 +111,7 @@ class AppListRepositoryImpl( ): List<ApplicationInfo> { val disabledComponentsFlag = (PackageManager.MATCH_DISABLED_COMPONENTS or PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS).toLong() val archivedPackagesFlag: Long = if (featureFlags.archiving()) val archivedPackagesFlag: Long = if (isArchivingEnabled(featureFlags)) PackageManager.MATCH_ARCHIVED_PACKAGES else 0L val regularFlags = ApplicationInfoFlags.of( disabledComponentsFlag or Loading Loading @@ -148,6 +149,9 @@ class AppListRepositoryImpl( } } private fun isArchivingEnabled(featureFlags: FeatureFlags) = featureFlags.archiving() || SystemProperties.getBoolean("pm.archiving.enabled", false) override fun showSystemPredicate( userIdFlow: Flow<Int>, showSystemFlow: Flow<Boolean>, Loading
services/core/java/com/android/server/pm/LauncherAppsService.java +9 −7 Original line number Diff line number Diff line Loading @@ -32,6 +32,8 @@ import static android.content.pm.LauncherApps.FLAG_CACHE_BUBBLE_SHORTCUTS; import static android.content.pm.LauncherApps.FLAG_CACHE_NOTIFICATION_SHORTCUTS; import static android.content.pm.LauncherApps.FLAG_CACHE_PEOPLE_TILE_SHORTCUTS; import static com.android.server.pm.PackageArchiver.isArchivingEnabled; import android.annotation.AppIdInt; import android.annotation.NonNull; import android.annotation.Nullable; Loading @@ -56,7 +58,6 @@ import android.content.IntentSender; import android.content.LocusId; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.pm.Flags; import android.content.pm.ILauncherApps; import android.content.pm.IOnAppsChangedListener; import android.content.pm.IPackageInstallerCallback; Loading Loading @@ -507,7 +508,8 @@ public class LauncherAppsService extends SystemService { if (!canAccessProfile(userId, "cannot get shouldHideFromSuggestions")) { return false; } if (Flags.archiving() && packageName != null && isPackageArchived(packageName, user)) { if (isArchivingEnabled() && packageName != null && isPackageArchived(packageName, user)) { return true; } if (mPackageManagerInternal.filterAppAccess( Loading @@ -530,7 +532,7 @@ public class LauncherAppsService extends SystemService { .addCategory(Intent.CATEGORY_LAUNCHER) .setPackage(packageName), user); if (Flags.archiving()) { if (isArchivingEnabled()) { launcherActivities = getActivitiesForArchivedApp(packageName, user, launcherActivities); } Loading Loading @@ -701,7 +703,7 @@ public class LauncherAppsService extends SystemService { callingUid, user.getIdentifier()); if (activityInfo == null) { if (Flags.archiving()) { if (isArchivingEnabled()) { return getMatchingArchivedAppActivityInfo(component, user); } return null; Loading Loading @@ -984,7 +986,7 @@ public class LauncherAppsService extends SystemService { long callingFlag = PackageManager.MATCH_DIRECT_BOOT_AWARE | PackageManager.MATCH_DIRECT_BOOT_UNAWARE; if (Flags.archiving()) { if (isArchivingEnabled()) { callingFlag |= PackageManager.MATCH_ARCHIVED_PACKAGES; } final PackageInfo info = Loading Loading @@ -1457,7 +1459,7 @@ public class LauncherAppsService extends SystemService { if (!canAccessProfile(user.getIdentifier(), "Cannot check component")) { return false; } if (Flags.archiving() && component != null && component.getPackageName() != null) { if (isArchivingEnabled() && component != null && component.getPackageName() != null) { List<LauncherActivityInfoInternal> archiveActivities = generateLauncherActivitiesForArchivedApp(component.getPackageName(), user); if (!archiveActivities.isEmpty()) { Loading Loading @@ -1788,7 +1790,7 @@ public class LauncherAppsService extends SystemService { } if (!canLaunch && includeArchivedApps && Flags.archiving() && isArchivingEnabled() && getMatchingArchivedAppActivityInfo(component, user) != null) { launchIntent.setPackage(null); launchIntent.setComponent(component); Loading
services/core/java/com/android/server/pm/PackageArchiver.java +6 −0 Original line number Diff line number Diff line Loading @@ -53,6 +53,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.ArchivedActivityParcel; import android.content.pm.ArchivedPackageInfo; import android.content.pm.ArchivedPackageParcel; import android.content.pm.Flags; import android.content.pm.LauncherActivityInfo; import android.content.pm.LauncherApps; import android.content.pm.PackageInstaller; Loading @@ -78,6 +79,7 @@ import android.os.ParcelableException; import android.os.Process; import android.os.RemoteException; import android.os.SELinux; import android.os.SystemProperties; import android.os.UserHandle; import android.text.TextUtils; import android.util.ExceptionUtils; Loading Loading @@ -173,6 +175,10 @@ public class PackageArchiver { return userState.getArchiveState() != null && !userState.isInstalled(); } public static boolean isArchivingEnabled() { return Flags.archiving() || SystemProperties.getBoolean("pm.archiving.enabled", false); } void requestArchive( @NonNull String packageName, @NonNull String callerPackageName, Loading
services/core/java/com/android/server/pm/PackageInstallerService.java +3 −2 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import static android.content.pm.PackageManager.INSTALL_UNARCHIVE_DRAFT; import static android.os.Process.INVALID_UID; import static android.os.Process.SYSTEM_UID; import static com.android.server.pm.PackageArchiver.isArchivingEnabled; import static com.android.server.pm.PackageManagerService.SHELL_PACKAGE_NAME; import static org.xmlpull.v1.XmlPullParser.END_DOCUMENT; Loading Loading @@ -826,7 +827,7 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements } params.installFlags &= ~PackageManager.INSTALL_UNARCHIVE; if (Flags.archiving() && params.appPackageName != null) { if (isArchivingEnabled() && params.appPackageName != null) { PackageStateInternal ps = mPm.snapshotComputer().getPackageStateInternal( params.appPackageName, SYSTEM_UID); if (ps != null Loading Loading @@ -1034,7 +1035,7 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements private int getExistingDraftSessionIdInternal(int installerUid, SessionParams sessionParams, int userId) { String appPackageName = sessionParams.appPackageName; if (!Flags.archiving() || installerUid == INVALID_UID || appPackageName == null) { if (!isArchivingEnabled() || installerUid == INVALID_UID || appPackageName == null) { return SessionInfo.INVALID_ID; } Loading