HarmonyOS 鸿蒙Next中子窗口调用maximize()方法报Unauthorized operation.(api17)
HarmonyOS 鸿蒙Next中子窗口调用maximize()方法报Unauthorized operation.(api17)
// 子窗口
Image($r('app.media.maximum_window'))
.height(20)
.width(20)
.onClick(() => {
if (canIUse("SystemCapability.Window.SessionManager")) {
let w = window.findWindow(this.getUIContext().getWindowName())
w.maximize(window.MaximizePresentation.EXIT_IMMERSIVE)
}
})
需要怎么解决呢?
更多关于HarmonyOS 鸿蒙Next中子窗口调用maximize()方法报Unauthorized operation.(api17)的实战教程也可以访问 https://www.itying.com/category-93-b0.html

可以参考以下示例进行定位排查
@Entry
@Component
struct Index {
@State subWindowClass: window.Window | undefined = undefined;
build() {
Column() {
Button('创建子窗口')
.onClick(() => {
let windowStage = AppStorage.get('windowStage') as window.WindowStage;
try {
let options: window.SubWindowOptions = {
title: "",
decorEnabled: true,
isModal: false,
maximizeSupported: true
};
windowStage.createSubWindowWithOptions('mySubWindow', options).then((windowClass) => {
windowClass.setResizeByDragEnabled(true, (err: BusinessError) => {
console.log("设置拖拽缩放", `报错信息:${err.code}, ${err.message}`)
})
this.subWindowClass = windowClass
windowClass.loadContent('pages/MySubWindow', null)
windowClass.moveWindowTo(300, 400);
// 设置子窗口大小
windowClass.resize(this.getUIContext().vp2px(200), this.getUIContext().vp2px(200));
// 展示子窗口
windowClass.showWindow();
console.info(`Succeeded in creating the subwindow. Data: ${JSON.stringify(windowClass)}`);
}).catch((err: BusinessError) => {
console.error(`Failed to create the subwindow. Cause code: ${err.code}, message: ${err.message}`);
});
} catch (exception) {
console.error(`Failed to create the subwindow. Cause code: ${exception.code}, message: ${exception.message}`);
}
})
Button('设置窗口最大化')
.onClick(() => {
this.subWindowClass?.maximize(window.MaximizePresentation.FOLLOW_APP_IMMERSIVE_SETTING).then(() => {
console.log('Succeeded in maximizing the window.');
}).catch((err: BusinessError) => {
console.error(`Failed to maximize the window. Cause code: ${err.code}, message: ${err.message}`);
});
});
}
.justifyContent(FlexAlign.Center)
.height('100%')
.width('100%')
}
}
相关文档:【设置应用启动时的窗口模式、大小与位置】
更多关于HarmonyOS 鸿蒙Next中子窗口调用maximize()方法报Unauthorized operation.(api17)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
主窗口可调用此接口实现最大化功能;子窗口需在创建时设置子窗口参数maximizeSupported为true,再调用此接口可实现最大化功能。
在HarmonyOS Next API 17中,子窗口调用maximize()方法报"Unauthorized operation"错误,是由于系统权限限制。子窗口默认不具备最大化权限,需要检查窗口类型配置。在窗口初始化时需设置正确的WindowType,某些类型子窗口不支持最大化操作。建议确认窗口配置参数是否符合系统规范,并验证当前API级别是否支持该操作。
在HarmonyOS Next API 17中,子窗口调用maximize()方法报"Unauthorized operation"错误,通常是因为窗口权限配置问题。需要检查以下配置:
- 在module.json5配置文件中添加窗口权限:
"requestPermissions": [
{
"name": "ohos.permission.SYSTEM_FLOAT_WINDOW"
}
]
- 确保子窗口创建时设置了正确的窗口类型:
let windowClass = null
let config = {
name: "subWindow",
windowType: window.WindowType.TYPE_FLOAT,
// 其他配置参数
}
- 检查窗口管理器能力声明: 在module.json5的"abilities"中确保包含:
"supportWindowMode": ["fullscreen", "split", "float"]
- 调用maximize前验证窗口状态:
if (w && w.isShowing()) {
w.maximize(window.MaximizePresentation.EXIT_IMMERSIVE)
}
权限配置完成后,需要重新编译安装应用。如果问题仍然存在,检查系统是否授予了悬浮窗权限。

