summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/compat/PackageInstallerCompatVL.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/launcher3/compat/PackageInstallerCompatVL.java')
-rw-r--r--src/com/android/launcher3/compat/PackageInstallerCompatVL.java14
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);
}
}
}