From 90db43d07b565407ae7bc751eeab4529b87a81f8 Mon Sep 17 00:00:00 2001 From: Jeff Chang Date: Wed, 12 Jul 2023 14:11:47 +0000 Subject: [PATCH] Ignore launch_adjacent when launch from App picker When a resolver activity is in split screen, starting an activity with launch_adjacent from resolver activity introduces a poor user experience for split screen mode. This CL keeps the resolver activity and the new activity on the same side of spit. Bug: 289909905 Test: 1. Make split (A|ResolverActivity) 2. Launch Activity B from ResolverActivity 3. Verfiy split (A|B) Change-Id: Id22ce393523607aa20d4d00954cca6aaea669efa --- core/java/com/android/internal/app/ResolverActivity.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index 50f393b53277c..2445daf89b640 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -31,6 +31,7 @@ import static android.app.admin.DevicePolicyResources.Strings.Core.RESOLVER_PERS import static android.app.admin.DevicePolicyResources.Strings.Core.RESOLVER_WORK_PROFILE_NOT_SUPPORTED; import static android.app.admin.DevicePolicyResources.Strings.Core.RESOLVER_WORK_TAB; import static android.app.admin.DevicePolicyResources.Strings.Core.RESOLVER_WORK_TAB_ACCESSIBILITY; +import static android.content.Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static android.content.PermissionChecker.PID_UNKNOWN; import static android.stats.devicepolicy.nano.DevicePolicyEnums.RESOLVER_EMPTY_STATE_NO_SHARING_TO_PERSONAL; @@ -356,6 +357,12 @@ public class ResolverActivity extends Activity implements // flag set, we are now losing it. That should be a very rare case // and we can live with this. intent.setFlags(intent.getFlags()&~Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); + + // If FLAG_ACTIVITY_LAUNCH_ADJACENT was set, ResolverActivity was opened in the alternate + // side, which means we want to open the target app on the same side as ResolverActivity. + if ((intent.getFlags() & FLAG_ACTIVITY_LAUNCH_ADJACENT) != 0) { + intent.setFlags(intent.getFlags() & ~FLAG_ACTIVITY_LAUNCH_ADJACENT); + } return intent; }