diff --git a/src/com/android/launcher3/model/AllAppsList.java b/src/com/android/launcher3/model/AllAppsList.java index 8d5cf7422f..c57c3e495a 100644 --- a/src/com/android/launcher3/model/AllAppsList.java +++ b/src/com/android/launcher3/model/AllAppsList.java @@ -26,6 +26,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.LauncherActivityInfo; import android.content.pm.LauncherApps; import android.os.LocaleList; +import android.os.Process; import android.os.UserHandle; import android.util.Log; @@ -161,14 +162,18 @@ public class AllAppsList { /** Updates the given PackageInstallInfo's associated AppInfo's installation info. */ public List updatePromiseInstallInfo(PackageInstallInfo installInfo) { List updatedAppInfos = new ArrayList<>(); - UserHandle user = installInfo.user; + UserHandle user = Process.myUserHandle(); for (int i = data.size() - 1; i >= 0; i--) { final AppInfo appInfo = data.get(i); final ComponentName tgtComp = appInfo.getTargetComponent(); if (tgtComp != null && tgtComp.getPackageName().equals(installInfo.packageName) && appInfo.user.equals(user)) { if (installInfo.state == PackageInstallInfo.STATUS_INSTALLED_DOWNLOADING - || installInfo.state == PackageInstallInfo.STATUS_INSTALLING) { + || installInfo.state == PackageInstallInfo.STATUS_INSTALLING) { + if (appInfo.isAppStartable() + && installInfo.state == PackageInstallInfo.STATUS_INSTALLING) { + continue; + } appInfo.setProgressLevel(installInfo); updatedAppInfos.add(appInfo); diff --git a/src/com/android/launcher3/model/PackageUpdatedTask.java b/src/com/android/launcher3/model/PackageUpdatedTask.java index 896bfb666e..3275d59488 100644 --- a/src/com/android/launcher3/model/PackageUpdatedTask.java +++ b/src/com/android/launcher3/model/PackageUpdatedTask.java @@ -38,6 +38,7 @@ import com.android.launcher3.logging.FileLog; import com.android.launcher3.model.data.ItemInfo; import com.android.launcher3.model.data.LauncherAppWidgetInfo; import com.android.launcher3.model.data.WorkspaceItemInfo; +import com.android.launcher3.pm.PackageInstallInfo; import com.android.launcher3.pm.UserCache; import com.android.launcher3.shortcuts.ShortcutRequest; import com.android.launcher3.util.FlagOp; @@ -246,6 +247,7 @@ public class PackageUpdatedTask extends BaseModelUpdateTask { if (isNewApkAvailable && si.itemType == Favorites.ITEM_TYPE_APPLICATION) { + si.setProgressLevel(100, PackageInstallInfo.STATUS_INSTALLED); iconCache.getTitleAndIcon(si, si.usingLowResIcon()); infoUpdated = true; } diff --git a/src/com/android/launcher3/model/data/AppInfo.java b/src/com/android/launcher3/model/data/AppInfo.java index 39247c221f..dde0cf4674 100644 --- a/src/com/android/launcher3/model/data/AppInfo.java +++ b/src/com/android/launcher3/model/data/AppInfo.java @@ -94,8 +94,6 @@ public class AppInfo extends ItemInfoWithIcon { componentName = info.componentName; title = Utilities.trim(info.title); intent = new Intent(info.intent); - user = info.user; - runtimeStatusFlags = info.runtimeStatusFlags; } @VisibleForTesting @@ -114,6 +112,7 @@ public class AppInfo extends ItemInfoWithIcon { .setComponent(componentName) .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); + setProgressLevel(installInfo); user = installInfo.user; } diff --git a/src/com/android/launcher3/model/data/ItemInfoWithIcon.java b/src/com/android/launcher3/model/data/ItemInfoWithIcon.java index b8a71d33e0..d95e7080de 100644 --- a/src/com/android/launcher3/model/data/ItemInfoWithIcon.java +++ b/src/com/android/launcher3/model/data/ItemInfoWithIcon.java @@ -129,7 +129,9 @@ public abstract class ItemInfoWithIcon extends ItemInfo { protected ItemInfoWithIcon(ItemInfoWithIcon info) { super(info); bitmap = info.bitmap; + mProgressLevel = info.mProgressLevel; runtimeStatusFlags = info.runtimeStatusFlags; + user = info.user; } @Override @@ -195,8 +197,8 @@ public abstract class ItemInfoWithIcon extends ItemInfo { : runtimeStatusFlags & ~FLAG_INCREMENTAL_DOWNLOAD_ACTIVE; } else { mProgressLevel = status == PackageInstallInfo.STATUS_INSTALLED ? 100 : 0; - runtimeStatusFlags = runtimeStatusFlags & ~FLAG_INSTALL_SESSION_ACTIVE; - runtimeStatusFlags = runtimeStatusFlags & ~FLAG_INCREMENTAL_DOWNLOAD_ACTIVE; + runtimeStatusFlags &= ~FLAG_INSTALL_SESSION_ACTIVE; + runtimeStatusFlags &= ~FLAG_INCREMENTAL_DOWNLOAD_ACTIVE; } }