当Android 7.0发布时,他们说有一个自由形式的多窗口模式选项,大致类似于传统的窗口桌面操作系统的工作方式(多个重叠的可调整窗口):
大型设备的制造商可以选择启用自由格式模式,用户可以在其中自由调整每项活动的大小。如果制造商启用此功能,除了分屏模式外,设备还提供自由形式模式。
但是,他们没有为此模式提供任何官方环境。
我知道至少有两个Android 7.0+环境,现在具有相当于自由形式的多窗口模式:
两者都提供多个重叠的可调整大小的窗口。但是,他们的行为并不相同。例如,DeX为windows托管活动提供了一个“旋转”标题栏选项,这些活动不会被宣传为可调整大小,从而将窗口从纵向翻转到横向。 Chrome OS自由格式多窗口实现缺乏此功能。
在Android 7.0+设备(例如Nexus 9)上获取官方自由格式多窗口模式的非正式方法是通过adb shell settings put global enable_freeform_support 1
。但是,当我在Chrome操作系统或DeX环境中运行settings get global enable_freeform_support
时,我会返回null
,表示未设置此设置。
问题在于,Android-on-Chrome-OS和DeX本身都非常“怪异”,两者都可能在Android 7.0之上实现了自己的半专有自由形式多窗口模式。毕竟,Android-on-Chrome-OS采用了原有的基于Android 6.0的发行版,三星在Android 7.0之前的部分设备上提供了分屏多窗口模式。
那么,有没有明确的方法来判断一个自由形式多窗口UI的特定Android环境是否正在使用官方的Android 7.0+自由形式多窗口实现而不是其他东西?
答案 0 :(得分:2)
SystemUI使用以下内容确定自由格式多窗口模式是否可用:
mHasFreeformWorkspaceSupport =
mPm.hasSystemFeature(PackageManager.FEATURE_FREEFORM_WINDOW_MANAGEMENT) ||
Settings.Global.getInt(context.getContentResolver(),
DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT, 0) != 0;
DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT
已隐藏,因此您需要将其替换为"enable_freeform_support"
:
boolean hasFreeFormWorkspaceSupport =
getPackageManager().hasSystemFeature(PackageManager.FEATURE_FREEFORM_WINDOW_MANAGEMENT) ||
Settings.Global.getInt(getContentResolver(), "enable_freeform_support", 0) != 0;
我没有Android-on-Chrome-OS或DeX来测试它,但是,这就是SystemUI检查是否启用了自由格式多窗口支持的方式。也许您可以从DeX或Chrome反编译设置或systemui应用程序,并检查它们是否在此处进行了更改。