讨论广场 问答详情
折叠屏上想开悬浮窗,`window` 接口调用一直失败
bug菌¹ 2026-11-02 16:37:14
赞 10 评论 分享
鸿蒙问答专区

想做一个"小窗继续播放"的功能,调 window.createWindow 开悬浮窗,一直抛错。是我权限不够还是折叠屏不支持?

 

坐标和尺寸我用的是 windowRect,这个有讲究吗?

赞 10 评论 分享
写回答
全部评论(1)

折叠屏上 window 接口创建悬浮窗一直失败,按错误码倒查最快,常见失败点三个:

一、时机不对:createWindow 必须在 windowStage 加载完成后调用。在页面 aboutToAppear 早期生命周期里调,windowStage 尚未就绪会直接失败。把创建逻辑挪到 EntryAbility 的 onWindowStageCreate,或确认页面所在窗口已加载完成再调。

二、权限与设备策略:应用的悬浮窗权限开关要在设置里手动打开;折叠屏展开态(大屏)上部分系统版本对第三方悬浮窗的尺寸、数量有策略限制——折叠态能开、展开态失败的话先怀疑设备策略,真机两态分别验证。

三、参数错误:type 必须用支持的窗口类型(TYPE_FLOAT 等);name 重复创建会报错;尺寸不能超屏。折叠态和展开态切换时窗口要监听尺寸变化重新布局,不能创建完就不管。

排查路径:把 createWindow 返回的 BusinessError 完整打出来——不同错误码对应不同修法;再核 API 版本(window 模块部分接口有版本门槛,旧版本没有的接口调用直接 undefined)。

一句话收束:时机、权限、参数三向排查,错误码是唯一的真相来源;折叠屏还要注意两态切换时的窗口重布局。

赞
2026-11-02 23:14:01