1-增加子窗口启动窗口隐藏

2-增加启动设备和状态检测(不适合的设备,或者未开启的功能会自动关闭,暂时还没加提示)
This commit is contained in:
JackLee 2026-04-21 16:19:30 +08:00
parent 1741abab5f
commit 22d82fccfc
8 changed files with 42 additions and 17 deletions

View File

@ -7,11 +7,11 @@
"material": { "material": {
"certpath": "C:\\Users\\JackLee\\.ohos\\config\\default_OpenCAX_IBQbNZG6W5V0zTmQxRPojupy-F1gTlaQ6msiMPu4JRM=.cer", "certpath": "C:\\Users\\JackLee\\.ohos\\config\\default_OpenCAX_IBQbNZG6W5V0zTmQxRPojupy-F1gTlaQ6msiMPu4JRM=.cer",
"keyAlias": "debugKey", "keyAlias": "debugKey",
"keyPassword": "0000001B2CD38FF95C9F1C08458296E67652F4DBA4D84D03D4468A904DEDA5C7AA6ADF19C56C0E83DAFDFE", "keyPassword": "0000001B21AB330D4506E54197E39D516254A107D6F69BEC6158A58DACD97A0661F51DB303F7F7C5E83CAA",
"profile": "C:\\Users\\JackLee\\.ohos\\config\\default_OpenCAX_IBQbNZG6W5V0zTmQxRPojupy-F1gTlaQ6msiMPu4JRM=.p7b", "profile": "C:\\Users\\JackLee\\.ohos\\config\\default_OpenCAX_IBQbNZG6W5V0zTmQxRPojupy-F1gTlaQ6msiMPu4JRM=.p7b",
"signAlg": "SHA256withECDSA", "signAlg": "SHA256withECDSA",
"storeFile": "C:\\Users\\JackLee\\.ohos\\config\\default_OpenCAX_IBQbNZG6W5V0zTmQxRPojupy-F1gTlaQ6msiMPu4JRM=.p12", "storeFile": "C:\\Users\\JackLee\\.ohos\\config\\default_OpenCAX_IBQbNZG6W5V0zTmQxRPojupy-F1gTlaQ6msiMPu4JRM=.p12",
"storePassword": "0000001B34A8AD5BD79AC1BDC8894626A599B5CC3A217A7F911B96A0FDBF8C7411D838809EA9B939B34EEE" "storePassword": "0000001B8207D7EF59E69E28EAE5FB4C9C38A1B6F70BCB0C224D0F17811D2053BFED6A612893BB9C7C0E1B"
} }
} }
], ],

View File

@ -4,7 +4,7 @@ import { window, display, AppStorageV2, ColorMetrics } from '@kit.ArkUI';
import { IBestInit } from "@ibestservices/ibest-ui-v2" import { IBestInit } from "@ibestservices/ibest-ui-v2"
import {ExtractDir,CheckExistDir,HilogSadboxFontDirFile} from "../pages/extractdir/ExtractDir" import {ExtractDir,CheckExistDir,HilogSadboxFontDirFile} from "../pages/extractdir/ExtractDir"
import { DisplayWindowInfo, InitGlobalDisplayWindowInfo,mdwInfo}from '../pages/displaywindowinfo/DispWinInfo' import { DisplayWindowInfo, InitGlobalDisplayWindowInfo,mdwInfo}from '../pages/displaywindowinfo/DispWinInfo'
import {RunEnvCheck} from '../pages/runenvcheck/RunEnvCheck'
const DOMAIN = 0x0000; const DOMAIN = 0x0000;
export default class EntryAbility extends UIAbility { export default class EntryAbility extends UIAbility {
@ -63,6 +63,9 @@ export default class EntryAbility extends UIAbility {
console.error(`Failed to obtain the main window. Code: ${err.code}, message: ${err.message}`); console.error(`Failed to obtain the main window. Code: ${err.code}, message: ${err.message}`);
return; return;
} }
if(!RunEnvCheck(data)){
this.context.terminateSelf();
}
mdwInfo.win = data; mdwInfo.win = data;
mdwInfo.winId =data.getWindowProperties().id; mdwInfo.winId =data.getWindowProperties().id;
//moveWindowTo //moveWindowTo
@ -99,6 +102,8 @@ export default class EntryAbility extends UIAbility {
if (mdwInfo.win) { if (mdwInfo.win) {
mdwInfo.win = undefined; mdwInfo.win = undefined;
} }
let ctx =this.context.getApplicationContext()
ctx.eventHub.emit('MainWindowDestroy');
// Main window is destroyed, release UI related resources // Main window is destroyed, release UI related resources
hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onWindowStageDestroy'); hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onWindowStageDestroy');
} }

View File

@ -2,7 +2,7 @@ import { CloseSubWindow, CreateAndShowSubWindow } from './EventSubPage';
import { CreateXCompNode } from './XCompMgr'; import { CreateXCompNode } from './XCompMgr';
import { mdwInfo } from '../displaywindowinfo/DispWinInfo'; import { mdwInfo } from '../displaywindowinfo/DispWinInfo';
import { window } from '@kit.ArkUI'; import { window } from '@kit.ArkUI';
import { common,Want } from "@kit.AbilityKit"; import { common, StartOptions,Want } from "@kit.AbilityKit";
import NativeOpenCAX from 'libopencax.so'; import NativeOpenCAX from 'libopencax.so';
import { import {
@ -150,7 +150,6 @@ export function EventWin(event:TitleButton){
async function EventCreateWin(): Promise<boolean>{ async function EventCreateWin(): Promise<boolean>{
let want: Want = { let want: Want = {
deviceId: '',
bundleName: 'com.example.opencax', bundleName: 'com.example.opencax',
abilityName: 'SubWinAbility' abilityName: 'SubWinAbility'
}; };
@ -177,12 +176,16 @@ async function EventCreateWin(): Promise<boolean>{
appCtx?.eventHub.off('SubWinInitialized'); appCtx?.eventHub.off('SubWinInitialized');
}); });
}); });
//启动参
let options: StartOptions = {
withAnimation:false,
hideStartWindow:true
};
// 发起启动 Ability 的请求 // 发起启动 Ability 的请求
console.info("Attempting to start SubWinAbility..."); console.info("Attempting to start SubWinAbility...");
await ctx.startAbility(want); await ctx.startAbility(want,options);
console.info("StartAbility request sent."); console.info("StartAbility request sent.");
// --- 等待初始化完成事件 --- // --- 等待初始化完成事件 ---
console.info("Waiting for SubWinInitialized event..."); console.info("Waiting for SubWinInitialized event...");
const initResult = await initializationPromise; const initResult = await initializationPromise;

View File

@ -0,0 +1,2 @@
软件运行环境检查<br>
对于不支持或者未开启只有窗口的设备进行提示!<br>

View File

@ -0,0 +1,19 @@
import { window} from '@kit.ArkUI';
import { display } from '@kit.ArkUI';
import { deviceInfo } from '@kit.BasicServicesKit';
export function RunEnvCheck(win:window.Window):boolean{
let resolve:boolean=true;
//获取屏幕状态,仅仅支持横屏模式.LANDSCAPE(横屏) or LANDSCAPE_INVERTED(反向横屏)
let orientation:number = display.getDefaultDisplaySync().orientation;
if(orientation!=1 && orientation!=3){
resolve=false;
//TIPS提示横屏
}
let freeWinState=win.isInFreeWindowMode();
if(!freeWinState){
resolve=false;
//TIPS提示开启自由窗口
}
return resolve;
}

View File

@ -14,6 +14,9 @@ export default class SubWinAbility extends UIAbility {
let winInfo=data as SubWinInfo; let winInfo=data as SubWinInfo;
this.InitWindowParam(winInfo); this.InitWindowParam(winInfo);
}); });
ctx.eventHub.on('MainWindowDestroy', (data: Object) => {
this.context.terminateSelf();
});
} }
//执行窗口参数 //执行窗口参数
InitWindowParam(winInfo:SubWinInfo){ InitWindowParam(winInfo:SubWinInfo){
@ -58,7 +61,6 @@ export default class SubWinAbility extends UIAbility {
} }
async onWindowStageCreate(windowStage: window.WindowStage): Promise<void> { async onWindowStageCreate(windowStage: window.WindowStage): Promise<void> {
windowStage.removeStartingWindow();
this.subWinStage=windowStage; this.subWinStage=windowStage;
this.subWin = await windowStage.getMainWindow(); this.subWin = await windowStage.getMainWindow();
let ctx =this.context.getApplicationContext() let ctx =this.context.getApplicationContext()
@ -68,6 +70,7 @@ export default class SubWinAbility extends UIAbility {
onWindowStageDestroy(): void { onWindowStageDestroy(): void {
let ctx =this.context.getApplicationContext() let ctx =this.context.getApplicationContext()
ctx.eventHub.off('InitSubWindow'); ctx.eventHub.off('InitSubWindow');
ctx.eventHub.off('MainWindowDestroy');
// Main window is destroyed, release UI related resources // Main window is destroyed, release UI related resources
hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onWindowStageDestroy'); hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onWindowStageDestroy');
} }

View File

@ -49,17 +49,10 @@
"description": "$string:EntryAbility_desc", "description": "$string:EntryAbility_desc",
"icon": "$media:base_opencax_logo", "icon": "$media:base_opencax_logo",
"label": "$string:EntryAbility_label", "label": "$string:EntryAbility_label",
"startWindowIcon": "$media:base_start_background", "startWindowIcon": "$media:base_sub_background",
"startWindowBackground": "$color:start_window_background", "startWindowBackground": "$color:start_window_background",
"exported": true, "exported": true,
"launchType":"standard", "launchType":"multiton",
"metadata":
[
{
"name":"enable.remove.starting.window",
"value":"true"
}
],
"skills": [ "skills": [
{ {
"entities": [ "entities": [

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB