diff options
author | Jon Miranda <jonmiranda@google.com> | 2019-09-03 08:13:09 -0700 |
---|---|---|
committer | Jon Miranda <jonmiranda@google.com> | 2019-09-03 08:13:09 -0700 |
commit | a8c7c0b713df06970e874cccaf30fe5191c3cdf2 (patch) | |
tree | 870cfe9dd735a5ec6a4aa77674b9f9a02d2cb835 /src | |
parent | 78ebf57e9fd3cd3e48356c61d7c890b4466dafee (diff) | |
download | android_packages_apps_Trebuchet-a8c7c0b713df06970e874cccaf30fe5191c3cdf2.tar.gz android_packages_apps_Trebuchet-a8c7c0b713df06970e874cccaf30fe5191c3cdf2.tar.bz2 android_packages_apps_Trebuchet-a8c7c0b713df06970e874cccaf30fe5191c3cdf2.zip |
Only add promise icon if icon is provided in the SessionInfo.
- In some cases, SessionInfo is created without an icon until later on
in the install process. This prevents promise icons with default Android
logo from appearing.
- This will also prevent apps without a launching activity from appearing
as a promise icon and then disappearing when the app is installed.
Bug: 135633159
Change-Id: I30adde8bf2cf583bffca8ed878f9cc20d6d41a13
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/launcher3/compat/PackageInstallerCompatVL.java | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/src/com/android/launcher3/compat/PackageInstallerCompatVL.java b/src/com/android/launcher3/compat/PackageInstallerCompatVL.java index e1f17cf46..bca66f7db 100644 --- a/src/com/android/launcher3/compat/PackageInstallerCompatVL.java +++ b/src/com/android/launcher3/compat/PackageInstallerCompatVL.java @@ -136,6 +136,25 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat { } } + /** + * Add a promise app icon to the workspace iff: + * - The settings for it are enabled + * - The user installed the app + * - There is a provided app icon (For apps with no launching activity, no icon is provided). + */ + private void tryQueuePromiseAppIcon(SessionInfo sessionInfo) { + if (Utilities.ATLEAST_OREO && FeatureFlags.PROMISE_APPS_NEW_INSTALLS.get() + && SessionCommitReceiver.isEnabled(mAppContext) + && sessionInfo != null + && sessionInfo.getInstallReason() == PackageManager.INSTALL_REASON_USER + && sessionInfo.getAppIcon() != null + && !mPromiseIconIds.contains(sessionInfo.getSessionId())) { + SessionCommitReceiver.queuePromiseAppIconAddition(mAppContext, sessionInfo); + mPromiseIconIds.add(sessionInfo.getSessionId()); + updatePromiseIconPrefs(); + } + } + private final SessionCallback mCallback = new SessionCallback() { @Override @@ -149,16 +168,7 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat { } } - if (Utilities.ATLEAST_OREO && FeatureFlags.PROMISE_APPS_NEW_INSTALLS.get() - && SessionCommitReceiver.isEnabled(mAppContext) - && sessionInfo != null - && sessionInfo.getInstallReason() == PackageManager.INSTALL_REASON_USER) { - SessionCommitReceiver.queuePromiseAppIconAddition(mAppContext, sessionInfo); - if (!mPromiseIconIds.contains(sessionInfo.getSessionId())) { - mPromiseIconIds.add(sessionInfo.getSessionId()); - updatePromiseIconPrefs(); - } - } + tryQueuePromiseAppIcon(sessionInfo); } @Override @@ -196,7 +206,10 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat { @Override public void onBadgingChanged(int sessionId) { - pushSessionDisplayToLauncher(sessionId); + SessionInfo sessionInfo = pushSessionDisplayToLauncher(sessionId); + if (sessionInfo != null) { + tryQueuePromiseAppIcon(sessionInfo); + } } private SessionInfo pushSessionDisplayToLauncher(int sessionId) { |