diff --git a/src/com/android/launcher3/model/PackageIncrementalDownloadUpdatedTask.java b/src/com/android/launcher3/model/PackageIncrementalDownloadUpdatedTask.java index 434776cf74..c0dc34abb5 100644 --- a/src/com/android/launcher3/model/PackageIncrementalDownloadUpdatedTask.java +++ b/src/com/android/launcher3/model/PackageIncrementalDownloadUpdatedTask.java @@ -15,7 +15,6 @@ */ package com.android.launcher3.model; -import android.content.Intent; import android.os.UserHandle; import com.android.launcher3.LauncherAppState; @@ -66,8 +65,7 @@ public class PackageIncrementalDownloadUpdatedTask extends BaseModelUpdateTask { final ArrayList updatedWorkspaceItems = new ArrayList<>(); synchronized (dataModel) { dataModel.forAllWorkspaceItemInfos(mUser, si -> { - Intent intent = si.getIntent(); - if ((intent != null) && mPackageName.equals(intent.getPackage())) { + if (mPackageName.equals(si.getTargetPackage())) { si.runtimeStatusFlags &= ~ItemInfoWithIcon.FLAG_INSTALL_SESSION_ACTIVE; si.setProgressLevel(downloadInfo); updatedWorkspaceItems.add(si); diff --git a/src/com/android/launcher3/model/PackageInstallStateChangedTask.java b/src/com/android/launcher3/model/PackageInstallStateChangedTask.java index 1380e9e0c4..9889a8065d 100644 --- a/src/com/android/launcher3/model/PackageInstallStateChangedTask.java +++ b/src/com/android/launcher3/model/PackageInstallStateChangedTask.java @@ -15,7 +15,6 @@ */ package com.android.launcher3.model; -import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; @@ -72,9 +71,8 @@ public class PackageInstallStateChangedTask extends BaseModelUpdateTask { synchronized (dataModel) { final HashSet updates = new HashSet<>(); dataModel.forAllWorkspaceItemInfos(mInstallInfo.user, si -> { - Intent intent = si.getIntent(); - if (si.hasPromiseIconUi() && (intent != null) - && mInstallInfo.packageName.equals(intent.getPackage())) { + if (si.hasPromiseIconUi() + && mInstallInfo.packageName.equals(si.getTargetPackage())) { int installProgress = mInstallInfo.progress; si.setProgressLevel(installProgress, PackageInstallInfo.STATUS_INSTALLING); diff --git a/src/com/android/launcher3/model/data/ItemInfo.java b/src/com/android/launcher3/model/data/ItemInfo.java index 00ac12fc46..e54f1e7705 100644 --- a/src/com/android/launcher3/model/data/ItemInfo.java +++ b/src/com/android/launcher3/model/data/ItemInfo.java @@ -184,6 +184,24 @@ public class ItemInfo { return Optional.ofNullable(getIntent()).map(Intent::getComponent).orElse(mComponentName); } + /** + * Returns this item's package name. + * + * Prioritizes the component package name, then uses the intent package name as a fallback. + * This ensures deep shortcuts are supported. + */ + @Nullable + public String getTargetPackage() { + ComponentName component = getTargetComponent(); + Intent intent = getIntent(); + + return component != null + ? component.getPackageName() + : intent != null + ? intent.getPackage() + : null; + } + public void writeToValues(ContentWriter writer) { writer.put(LauncherSettings.Favorites.ITEM_TYPE, itemType) .put(LauncherSettings.Favorites.CONTAINER, container)