summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJon Miranda <jonmiranda@google.com>2019-09-03 08:13:09 -0700
committerJon Miranda <jonmiranda@google.com>2019-09-03 08:13:09 -0700
commita8c7c0b713df06970e874cccaf30fe5191c3cdf2 (patch)
tree870cfe9dd735a5ec6a4aa77674b9f9a02d2cb835 /src
parent78ebf57e9fd3cd3e48356c61d7c890b4466dafee (diff)
downloadandroid_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.java35
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) {