diff options
Diffstat (limited to 'src/com/android/launcher3/compat/PackageInstallerCompatVL.java')
-rw-r--r-- | src/com/android/launcher3/compat/PackageInstallerCompatVL.java | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/com/android/launcher3/compat/PackageInstallerCompatVL.java b/src/com/android/launcher3/compat/PackageInstallerCompatVL.java index 48ac05b71..ee9da7372 100644 --- a/src/com/android/launcher3/compat/PackageInstallerCompatVL.java +++ b/src/com/android/launcher3/compat/PackageInstallerCompatVL.java @@ -141,6 +141,8 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat { * - The settings for it are enabled * - The user installed the app * - There is an app icon and label (For apps with no launching activity, no icon is provided). + * - The app is not already installed + * - A promise icon for the session has not already been created */ private void tryQueuePromiseAppIcon(SessionInfo sessionInfo) { if (Utilities.ATLEAST_OREO && FeatureFlags.PROMISE_APPS_NEW_INSTALLS.get() @@ -149,7 +151,9 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat { && sessionInfo.getInstallReason() == PackageManager.INSTALL_REASON_USER && sessionInfo.getAppIcon() != null && !TextUtils.isEmpty(sessionInfo.getAppLabel()) - && !mPromiseIconIds.contains(sessionInfo.getSessionId())) { + && !mPromiseIconIds.contains(sessionInfo.getSessionId()) + && mLauncherApps.getApplicationInfo(sessionInfo.getAppPackageName(), 0, + getUserHandle(sessionInfo)) == null) { SessionCommitReceiver.queuePromiseAppIconAddition(mAppContext, sessionInfo); mPromiseIconIds.add(sessionInfo.getSessionId()); updatePromiseIconPrefs(); @@ -184,12 +188,14 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat { sendUpdate(PackageInstallInfo.fromState(success ? STATUS_INSTALLED : STATUS_FAILED, packageName, key.mUser)); - if (!success && FeatureFlags.PROMISE_APPS_NEW_INSTALLS.get()) { + if (!success && FeatureFlags.PROMISE_APPS_NEW_INSTALLS.get() + && mPromiseIconIds.contains(sessionId)) { LauncherAppState appState = LauncherAppState.getInstanceNoCreate(); if (appState != null) { - LauncherModel model = appState.getModel(); - model.onPackageRemoved(packageName, key.mUser); + appState.getModel().onSessionFailure(packageName, key.mUser); } + // If it is successful, the id is removed in the the package added flow. + removePromiseIconId(sessionId); } } } |