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
This commit is contained in:
Jeff Chang
2023-07-12 14:11:47 +00:00
parent fe395a0ec7
commit 90db43d07b

View File

@@ -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;
}