diff --git a/src/com/android/launcher3/model/WorkspaceItemProcessor.kt b/src/com/android/launcher3/model/WorkspaceItemProcessor.kt index 31ae7c2e50..88b98aaa5a 100644 --- a/src/com/android/launcher3/model/WorkspaceItemProcessor.kt +++ b/src/com/android/launcher3/model/WorkspaceItemProcessor.kt @@ -433,7 +433,9 @@ class WorkspaceItemProcessor( !c.hasRestoreFlag(LauncherAppWidgetInfo.FLAG_RESTORE_STARTED) && !isSafeMode && (si == null) && - (lapi == null) + (lapi == null) && + !(Utilities.enableSupportForArchiving() && + pmHelper.isAppArchived(component.packageName)) ) { // Restore never started c.markDeleted( diff --git a/src/com/android/launcher3/util/PackageManagerHelper.java b/src/com/android/launcher3/util/PackageManagerHelper.java index 50d8886980..92288e157d 100644 --- a/src/com/android/launcher3/util/PackageManagerHelper.java +++ b/src/com/android/launcher3/util/PackageManagerHelper.java @@ -106,6 +106,23 @@ public class PackageManagerHelper { return info != null; } + /** + * Returns whether the target app is in archived state + */ + @SuppressWarnings("NewApi") + public boolean isAppArchived(@NonNull final String packageName) { + final ApplicationInfo info; + try { + info = mPm.getPackageInfo(packageName, + PackageManager.PackageInfoFlags.of( + PackageManager.MATCH_ARCHIVED_PACKAGES)).applicationInfo; + return info.isArchived; + } catch (NameNotFoundException e) { + Log.e(TAG, "Failed to get applicationInfo for package: " + packageName, e); + return false; + } + } + /** * Returns the application info for the provided package or null */