在 Nougat 中禁用分屏模式

Disabling SplitScreen mode in Nougat

如何在Android 7.1.1 中禁用SplitScreen 模式而不禁用MultiWindow 模式?

我正在使用自由形式 Window 模式打开多个活动。在设备的横向方向上,当将活动拖动到屏幕的左边缘或右边缘时,activity 停靠并且 StackDivider 拆分屏幕。禁用 MultiWindow 模式最终会禁用 Freeform Window 模式。那么有没有办法通过编辑 Android 源代码来仅禁用 SplitScreen 模式(而不禁用 MultiWindow 模式)?

https://developer.android.com/guide/topics/ui/multi-window.html

根据文档,在清单 activity 或应用程序

中执行此操作
android:resizeableActivity=["true" | "false"]

在自由形式模式下,当通过拖动应用程序或 window 将其 DecorCaptionView 移动到屏幕的左角或右角时,会根据位置在左侧或右侧生成暗层window 并在 MOtionEvent.ACTION_UP 事件中停靠到当前暗淡的一侧。

DecorCaptionView 上的 MotionEvent 操作由 frameworks/base/services/core/java/com/android/server/wm/TaskPositioner.java 处理,每当停靠 window 时调用 ActivityManagerService 中的 moveTaskToDockedStack() 方法. TaskPositioner.java中的updateDimLayerVisibility()方法负责dim层的创建。因此,可以通过在TaskPositioner.java中注释掉上面提到的两个方法调用行来禁用SplitScreen模式。