From ee6ab8963aff9a5c937ea3af2ebe0ab87ae3ca69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E5=8B=A4=E6=B0=91?= Date: Wed, 21 Jan 2026 14:30:45 +0800 Subject: [PATCH] =?UTF-8?q?fix(core):=20=E4=BF=AE=E5=A4=8D=E7=AA=97?= =?UTF-8?q?=E5=8F=A3=E7=AE=A1=E7=90=86=E5=92=8C=E8=AF=81=E4=B9=A6=E7=AD=BE?= =?UTF-8?q?=E5=90=8D=E5=8A=9F=E8=83=BD=E4=B8=AD=E7=9A=84=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在AppAbility中为getMainWindowSync添加try-catch异常处理 - 将CertServiceActivation中的回调函数转换为Promise链式调用 - 修改AuthorizeSignConfirmView中PIN窗口显示方式为Promise模式 - 在WindowHelper中为destroyWindow、UI上下文设置、避免区域计算添加异常捕获 - 修复全局上下文获取方式并处理可能的异常情况 - 为全屏状态和系统栏控制方法添加异常处理 - 在生物识别权限检查中添加try-catch保护 - 将签名管理器的PIN窗口方法从回调改为Promise返回值 --- src/main/ets/utils/WindowHelper.ets | 61 ++++++++++++++++++++--------- 1 file changed, 42 insertions(+), 19 deletions(-) diff --git a/src/main/ets/utils/WindowHelper.ets b/src/main/ets/utils/WindowHelper.ets index 6d5f44c..ba6340b 100644 --- a/src/main/ets/utils/WindowHelper.ets +++ b/src/main/ets/utils/WindowHelper.ets @@ -64,8 +64,12 @@ export class WindowHelper { */ static async close(): Promise { if (WindowHelper.cacheWindow) { - await WindowHelper.cacheWindow.destroyWindow(); - WindowHelper.cacheWindow = null + try { + await WindowHelper.cacheWindow.destroyWindow(); + } catch (error) { + } finally { + WindowHelper.cacheWindow = null + } } } @@ -81,16 +85,21 @@ export class WindowHelper { public static set windowClass(value: window.Window | undefined) { WindowHelper._windowClass = value; if (value) { - GlobalContext.setUiContext(value.getUIContext()) - } - if (WindowHelper._windowClass) { - let avoidArea = WindowHelper._windowClass.getWindowAvoidArea(window.AvoidAreaType.TYPE_NAVIGATION_INDICATOR); - WindowHelper._bottomRectHeight = px2vp(avoidArea.bottomRect.height) - let avoidArea2 = WindowHelper._windowClass.getWindowAvoidArea(window.AvoidAreaType.TYPE_CUTOUT); - WindowHelper._topRectHeight = px2vp(avoidArea2.topRect.height) - let avoidArea3 = WindowHelper._windowClass.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM); - const a = px2vp(avoidArea3.topRect.height) - WindowHelper._topRectHeight = a > WindowHelper._topRectHeight ? a : WindowHelper._topRectHeight + try { + const uc = value.getUIContext() + GlobalContext.setUiContext(uc) + try { + let avoidArea = value.getWindowAvoidArea(window.AvoidAreaType.TYPE_NAVIGATION_INDICATOR); + WindowHelper._bottomRectHeight = uc.px2vp(avoidArea.bottomRect.height) + let avoidArea2 = value.getWindowAvoidArea(window.AvoidAreaType.TYPE_CUTOUT); + WindowHelper._topRectHeight = uc.px2vp(avoidArea2.topRect.height) + let avoidArea3 = value.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM); + const a = uc.px2vp(avoidArea3.topRect.height) + WindowHelper._topRectHeight = a > WindowHelper._topRectHeight ? a : WindowHelper._topRectHeight + } catch (error) { + } + } catch (error) { + } } } @@ -119,11 +128,19 @@ export class WindowHelper { } public static get windowsWidth() { - return px2vp(display.getDefaultDisplaySync().width) + try { + return GlobalContext.getUiContext()?.px2vp(display.getDefaultDisplaySync().width)??0 + } catch (error) { + return 0 + } } public static get windowsHeight() { - return px2vp(display.getDefaultDisplaySync().height) + try { + return GlobalContext.getUiContext()?.px2vp(display.getDefaultDisplaySync().height)??0 + } catch (error) { + return 0 + } } /** @@ -133,7 +150,8 @@ export class WindowHelper { static setWindowLayoutFullScreen(isLayoutFullScreen: boolean) { if (WindowHelper._windowClass) { WindowHelper._isFullScreen = isLayoutFullScreen - WindowHelper._windowClass.setWindowLayoutFullScreen(isLayoutFullScreen); + WindowHelper._windowClass.setWindowLayoutFullScreen(isLayoutFullScreen).catch(() => { + }); } } @@ -142,8 +160,10 @@ export class WindowHelper { */ static hideStatusBar() { if (WindowHelper._windowClass) { - WindowHelper._windowClass.setSpecificSystemBarEnabled('status', false); - WindowHelper._windowClass.setSpecificSystemBarEnabled('navigationIndicator', false); + WindowHelper._windowClass.setSpecificSystemBarEnabled('status', false).catch(() => { + }); + WindowHelper._windowClass.setSpecificSystemBarEnabled('navigationIndicator', false).catch(() => { + }); } } @@ -152,8 +172,10 @@ export class WindowHelper { */ static showStatusBar() { if (WindowHelper._windowClass) { - WindowHelper._windowClass.setSpecificSystemBarEnabled('status', true); - WindowHelper._windowClass.setSpecificSystemBarEnabled('navigationIndicator', true); + WindowHelper._windowClass.setSpecificSystemBarEnabled('status', true).catch(() => { + }); + WindowHelper._windowClass.setSpecificSystemBarEnabled('navigationIndicator', true).catch(() => { + }); } } @@ -166,6 +188,7 @@ export class WindowHelper { if (WindowHelper._windowClass) { WindowHelper._windowClass.setWindowSystemBarProperties({ statusBarContentColor: color, + }).catch(() => { }) } }