文档管理中心
我的
您当前正在浏览新版开发者文档中心,目录分类和层级有所调整。点击左侧当前文档分类名称前的“☰”图标,可切换文档分类。 了解新版目录
问题处理与运维开发与测试问题应用框架开发UI框架窗口管理禁用分屏功能

禁用分屏功能

问题现象

在手机或PAD非自由多窗模式下,长按窗口底部向上拖动可以设置窗口分屏或悬浮窗展示,在PC上,窗口拖动到屏幕边缘会自动最大化,如何禁用这些功能呢?

背景知识

  • module.json5配置文件包含模块的基本配置信息、UIAbility组件和ExtensionAbility组件信息,以及应用运行过程中需要的权限信息,用于向编译工具、操作系统和应用市场提供应用的基本信息。文件所在目录为工程名称/模块名称(例如entry)/src/main/module.json5。
  • abilities标签描述UIAbility组件的配置信息,标签值为数组类型,该标签下的配置只对当前UIAbility生效。
  • abilities标签下的supportWindowMode属性标识当前UIAbility组件所支持的窗口模式。支持的取值如下:
    • fullscreen:全屏模式。
    • split:分屏模式。
    • floating:悬浮窗模式。

    在自由窗口状态下同时配置fullscreen和split时,如果应用的targetAPIVersion小于15,窗口将以悬浮窗模式启动;如果应用的targetAPIVersion大于等于15,窗口将以全屏模式启动。此外,还可以通过metadata配置窗口模式,具体的配置规则和优先级请参考metadata。

解决方案

  • 禁用分屏模式:将module.json5配置文件中的abilities标签下的supportWindowMode属性设置为["fullscreen", "floating"],则只支持全屏及悬浮窗模式,不支持分屏模式。
  • 禁用悬浮窗模式:将module.json5配置文件中的abilities标签下的supportWindowMode属性设置为["fullscreen", "split"],则只支持全屏及分屏模式,不支持悬浮窗模式。
  • 禁用分屏及悬浮窗模式:将module.json5配置文件中的abilities标签下的supportWindowMode属性设置为["fullscreen"],则只支持全屏模式,不支持分屏及悬浮窗模式。
  • 禁用全屏模式:将module.json5配置文件中的abilities标签下的supportWindowMode属性设置为["floating","split"],则只支持小窗(分屏或悬浮窗)模式,不支持全屏模式。

示例代码如下:

收起
自动换行
深色代码主题
复制
  1. "abilities": [
  2. {
  3. "name": "EntryAbility",
  4. "srcEntry": "./ets/entryability/EntryAbility.ets",
  5. "description": "$string:EntryAbility_desc",
  6. "icon": "$media:layered_image",
  7. "label": "$string:EntryAbility_label",
  8. "startWindowIcon": "$media:startIcon",
  9. "startWindowBackground": "$color:start_window_background",
  10. "exported": true,
  11. // 设置窗口模式:禁用分屏配置["fullscreen","floating"],禁用悬浮窗配置["fullscreen","split"],只全屏配置["fullscreen"]
  12. // 以下以禁用分屏为例,其他场景按上述配置
  13. "supportWindowMode": ["fullscreen","floating"],
  14. "skills": [
  15. {
  16. "entities": [
  17. "entity.system.home"
  18. ],
  19. "actions": [
  20. "ohos.want.action.home"
  21. ]
  22. }
  23. ]
  24. }
  25. ],

常见FAQ

Q:为何avoidAreaChange监听在悬浮窗时获取到的都是0?

A:需要排查监听避让区的方式是否正确,window.AvoidAreaType.TYPE_CUTOUT表示挖孔区域,window.AvoidAreaType.TYPE_SYSTEM表示悬浮窗下的三点控制栏区域,详情参考AvoidAreaType。