diff --git a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java index f43cd7a80ede6..9cc24e2b2120e 100644 --- a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java +++ b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java @@ -261,7 +261,8 @@ class TaskLaunchParamsModifier implements LaunchParamsModifier { if (launchMode == WINDOWING_MODE_PINNED) { if (DEBUG) appendLog("picture-in-picture"); } else if (!root.isResizeable()) { - if (shouldLaunchUnresizableAppInFreeform(root, suggestedDisplayArea)) { + if (shouldLaunchUnresizableAppInFreeform(root, suggestedDisplayArea, + options.getLaunchWindowingMode())) { launchMode = WINDOWING_MODE_FREEFORM; if (outParams.mBounds.isEmpty()) { getTaskBounds(root, suggestedDisplayArea, layout, launchMode, @@ -617,7 +618,11 @@ class TaskLaunchParamsModifier implements LaunchParamsModifier { } private boolean shouldLaunchUnresizableAppInFreeform(ActivityRecord activity, - TaskDisplayArea displayArea) { + TaskDisplayArea displayArea, int launchWindowingMode) { + if (launchWindowingMode == WINDOWING_MODE_FULLSCREEN) { + // Do not launch the activity in freeform if it explicitly requested fullscreen mode. + return false; + } if (!activity.supportsFreeformInDisplayArea(displayArea) || activity.isResizeable()) { return false; }