1# @ohos.app.ability.UIExtensionContentSession (带界面扩展能力界面操作类) 2 3UIExtensionContentSession是[UIExtensionAbility](js-apis-app-ability-uiExtensionAbility.md)加载界面内容时创建的实例对象,当UIExtensionComponent控件拉起指定的UIExtensionAbility时,UIExtensionAbility会创建UIExtensionContentSession对象,并通过[onSessionCreate](js-apis-app-ability-uiExtensionAbility.md#uiextensionabilityonsessioncreate)回调传递给开发者。一个UIExtensionComponent控件对应一个UIExtensionContentSession对象,提供界面加载,结果通知等方法。每个UIExtensionAbility的UIExtensionContentSession之间互不影响,可以各自进行操作。 4 5> **说明:** 6> 7> 本模块首批接口从API version 10 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8> 9> 本模块接口仅可在Stage模型下使用。 10 11## 导入模块 12 13```ts 14import { UIExtensionContentSession } from '@kit.AbilityKit'; 15``` 16 17## UIExtensionContentSession.loadContent 18 19loadContent(path: string, storage?: LocalStorage): void 20 21为当前UIExtensionComponent控件对应的窗口加载与LocalStorage相关联的具体页面内容。 22 23**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 24 25**参数:** 26 27| 参数名 | 类型 | 必填 | 说明 | 28| ------- | ----------------------------------------------- | ---- | ------------------------------------------------------------ | 29| path | string | 是 | 设置加载页面的路径。 | 30| storage | [LocalStorage](../../ui/state-management/arkts-localstorage.md) | 否 | 存储单元,为应用程序范围内的可变状态属性和非可变状态属性提供存储。默认为空。 | 31 32**错误码:** 33 34以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。 35 36| 错误码ID | 错误信息 | 37| ------- | -------------------------------- | 38| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 39| 16000050 | Internal error. | 40 41**示例:** 42 43```ts 44import { UIExtensionContentSession, UIExtensionAbility, Want } from '@kit.AbilityKit'; 45 46export default class UIExtAbility extends UIExtensionAbility { 47 // ... 48 49 onSessionCreate(want: Want, session: UIExtensionContentSession): void { 50 let storage: LocalStorage = new LocalStorage(); 51 storage.setOrCreate('session', session); 52 session.loadContent('pages/Extension', storage); 53 } 54 55 // ... 56} 57``` 58 59## UIExtensionContentSession.loadContentByName<sup>18+</sup> 60 61loadContentByName(name: string, storage?: LocalStorage): void 62 63为[UIExtensionAbility](./js-apis-app-ability-uiExtensionAbility.md)加载[命名路由](../../ui/arkts-routing.md#命名路由)页面,支持通过[LocalStorage](../../ui/state-management/arkts-localstorage.md)传递状态属性给被加载的页面。该接口用于开发者在UIExtensionAbility的[onSessionCreate](./js-apis-app-ability-uiExtensionAbility.md#uiextensionabilityonsessioncreate)生命周期加载命名路由页面。 64 65**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 66 67**参数:** 68 69| 参数名 | 类型 | 必填 | 说明 | 70| ------ | ------ | ------ | ------ | 71| name | string | 是 | 命名路由页面的名称。 | 72| storage | [LocalStorage](../../ui/state-management/arkts-localstorage.md) | 否 | 页面级UI状态存储单元,用于为加载的的页面传递状态属性,默认值为空。 | 73 74**错误码:** 75 76以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。 77 78| 错误码ID | 错误信息 | 79| ------ | ------ | 80| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 81| 16000050 | Internal error. | 82 83**示例:** 84 85UIExtensionAbility的实现: 86```ts 87import { UIExtensionContentSession, UIExtensionAbility, Want } from '@kit.AbilityKit'; 88import { BusinessError } from '@kit.BasicServicesKit'; 89import './pages/UIExtensionPage'; // 导入命名路由页面,示例代码以“./pages/UIExtensionPage.ets”文件为例,在实际代码开发过程中修改为真实路径和文件名称。 90 91export default class UIExtAbility extends UIExtensionAbility { 92 // 其他生命周期和实现 93 94 onSessionCreate(want: Want, session: UIExtensionContentSession): void { 95 let storage: LocalStorage = new LocalStorage(); 96 storage.setOrCreate('session', session); 97 98 let name: string = 'UIExtPage'; // 命名路由页面的名字。 99 try { 100 session.loadContentByName(name, storage); 101 } catch (error) { 102 let code = (error as BusinessError).code; 103 let message = (error as BusinessError).message; 104 console.error(`Failed to load content by name ${name}, code: ${code}, msg: ${message}`); 105 } 106 } 107 108 // 其他生命周期和实现 109} 110``` 111 112UIExtensionAbility加载的命名路由页面的实现: 113```ts 114// “./pages/UIExtensionPage.ets”文件的实现。 115import { UIExtensionContentSession } from '@kit.AbilityKit'; 116 117@Entry({ routeName: 'UIExtPage' }) // 通过“routeName”定义命名路由页面的名字。 118@Component 119struct UIExtensionPage { 120 @State message: string = 'Hello world'; 121 storage: LocalStorage | undefined = this.getUIContext().getSharedLocalStorage(); 122 private session: UIExtensionContentSession | undefined = this.storage?.get<UIExtensionContentSession>('session'); 123 124 build() { 125 Row() { 126 Column() { 127 Text(this.message) 128 .fontSize(20) 129 .fontWeight(FontWeight.Bold) 130 } 131 .width('100%') 132 } 133 .height('100%') 134 } 135} 136``` 137 138## UIExtensionContentSession.terminateSelf 139 140terminateSelf(callback: AsyncCallback<void>): void 141 142停止UIExtensionContentSession对应的窗口界面对象。使用callback异步回调。 143 144**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 145 146**参数:** 147 148| 参数名 | 类型 | 必填 | 说明 | 149| -------- | -------- | -------- | -------- | 150| callback | AsyncCallback<void> | 是 | 回调函数。当停止UIExtensionContentSession对应的窗口界面对象成功,err为undefined,否则为错误对象。 | 151 152**错误码:** 153 154以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 155 156| 错误码ID | 错误信息 | 157| ------- | -------------------------------- | 158| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 159 160**示例:** 161 162```ts 163import { UIExtensionContentSession } from '@kit.AbilityKit'; 164import { BusinessError } from '@kit.BasicServicesKit'; 165 166@Entry() 167@Component 168struct Index { 169 storage: LocalStorage | undefined = this.getUIContext().getSharedLocalStorage(); 170 private session: UIExtensionContentSession | undefined = 171 this.storage?.get<UIExtensionContentSession>('session'); 172 173 build() { 174 RelativeContainer() { 175 Button('TerminateSelf') 176 .onClick(() => { 177 this.session?.terminateSelf((err: BusinessError) => { 178 if (err) { 179 console.error(`Failed to terminate self, code: ${err.code}, msg: ${err.message}`); 180 return; 181 } 182 console.info(`Succeeded in terminating self.`); 183 }); 184 185 this.storage?.clear(); 186 }) 187 } 188 .height('100%') 189 .width('100%') 190 } 191} 192``` 193 194## UIExtensionContentSession.terminateSelf 195 196terminateSelf(): Promise<void> 197 198停止UIExtensionContentSession对应的窗口界面对象。使用Promise异步回调。 199 200**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 201 202**返回值:** 203 204| 类型 | 说明 | 205| -------- | -------- | 206| Promise<void> | Promise对象。无返回结果的Promise对象。 | 207 208**示例:** 209 210```ts 211import { UIExtensionContentSession } from '@kit.AbilityKit'; 212import { BusinessError } from '@kit.BasicServicesKit'; 213 214@Entry() 215@Component 216struct Index { 217 storage: LocalStorage | undefined = this.getUIContext().getSharedLocalStorage(); 218 private session: UIExtensionContentSession | undefined = 219 this.storage?.get<UIExtensionContentSession>('session'); 220 221 build() { 222 RelativeContainer() { 223 Button('TerminateSelf') 224 .onClick(() => { 225 this.session?.terminateSelf() 226 .then(() => { 227 console.info(`Succeeded in terminating self.`); 228 }) 229 .catch((err: BusinessError) => { 230 console.error(`Failed to terminate self, code: ${err.code}, msg: ${err.message}`); 231 }); 232 233 this.storage?.clear(); 234 }) 235 } 236 .height('100%') 237 .width('100%') 238 } 239} 240``` 241 242## UIExtensionContentSession.terminateSelfWithResult 243 244terminateSelfWithResult(parameter: AbilityResult, callback: AsyncCallback<void>): void 245 246停止UIExtensionContentSession对应的窗口界面对象,并将结果返回给UIExtensionComponent控件。使用callback异步回调。 247 248**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 249 250**参数:** 251 252| 参数名 | 类型 | 必填 | 说明 | 253| -------- | -------- | -------- | -------- | 254| parameter | [AbilityResult](js-apis-inner-ability-abilityResult.md) | 是 | 返回给UIExtensionComponent控件的信息。 | 255| callback | AsyncCallback<void> | 是 | 回调函数。当停止成功,err为undefined,否则为错误对象。 | 256 257**错误码:** 258 259以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 260 261| 错误码ID | 错误信息 | 262| ------- | -------------------------------- | 263| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 264 265**示例:** 266 267```ts 268import { UIExtensionContentSession, common } from '@kit.AbilityKit'; 269import { BusinessError } from '@kit.BasicServicesKit'; 270 271@Entry() 272@Component 273struct Index { 274 storage: LocalStorage | undefined = this.getUIContext().getSharedLocalStorage(); 275 private session: UIExtensionContentSession | undefined = 276 this.storage?.get<UIExtensionContentSession>('session'); 277 278 build() { 279 RelativeContainer() { 280 Button('TerminateSelfWithResult') 281 .onClick(() => { 282 let abilityResult: common.AbilityResult = { 283 resultCode: 0, 284 want: { 285 bundleName: 'com.ohos.uiextensioncontentsession', 286 parameters: { 287 'result': 123456 288 } 289 } 290 }; 291 292 this.session?.terminateSelfWithResult(abilityResult, (err: BusinessError) => { 293 if (err) { 294 console.error(`Failed to terminate self with result, code: ${err.code}, msg: ${err.message}`); 295 return; 296 } 297 console.info(`Succeeded in terminating self with result.`); 298 }); 299 300 this.storage?.clear(); 301 }) 302 } 303 .height('100%') 304 .width('100%') 305 } 306} 307``` 308 309## UIExtensionContentSession.terminateSelfWithResult 310 311terminateSelfWithResult(parameter: AbilityResult): Promise<void> 312 313停止UIExtensionContentSession对应的窗口界面对象,并将结果返回给UIExtensionComponent控件。使用Promise异步回调。 314 315**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 316 317**参数:** 318 319| 参数名 | 类型 | 必填 | 说明 | 320| -------- | -------- | -------- | -------- | 321| parameter | [AbilityResult](js-apis-inner-ability-abilityResult.md) | 是 | 返回给UIExtensionComponent控件的信息。 | 322 323**返回值:** 324 325| 类型 | 说明 | 326| -------- | -------- | 327| Promise<void> | Promise对象。无返回结果的Promise对象。 | 328 329**错误码:** 330 331以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 332 333| 错误码ID | 错误信息 | 334| ------- | -------------------------------- | 335| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 336 337**示例:** 338 339```ts 340import { UIExtensionContentSession, common } from '@kit.AbilityKit'; 341import { BusinessError } from '@kit.BasicServicesKit'; 342 343@Entry() 344@Component 345struct Index { 346 storage: LocalStorage | undefined = this.getUIContext().getSharedLocalStorage(); 347 private session: UIExtensionContentSession | undefined = 348 this.storage?.get<UIExtensionContentSession>('session'); 349 350 build() { 351 RelativeContainer() { 352 Button('TerminateSelfWithResult') 353 .onClick(() => { 354 let abilityResult: common.AbilityResult = { 355 resultCode: 0, 356 want: { 357 bundleName: 'com.ohos.uiextensioncontentsession', 358 parameters: { 359 'result': 123456 360 } 361 } 362 }; 363 364 this.session?.terminateSelfWithResult(abilityResult) 365 .then(() => { 366 console.info(`Succeeded in terminating self with result.`); 367 }) 368 .catch((err: BusinessError) => { 369 console.error(`Failed to terminate self with result, code: ${err.code}, msg: ${err.message}`); 370 }); 371 372 this.storage?.clear(); 373 }) 374 } 375 .height('100%') 376 .width('100%') 377 } 378} 379``` 380 381## UIExtensionContentSession.setWindowPrivacyMode 382 383setWindowPrivacyMode(isPrivacyMode: boolean): Promise<void> 384 385设置窗口是否为隐私模式。设置为隐私模式的窗口,窗口内容将无法被截屏或录屏。使用Promise异步回调。 386 387**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 388 389**需要权限**:ohos.permission.PRIVACY_WINDOW 390 391**参数:** 392 393| 参数名 | 类型 | 必填 | 说明 | 394| ------------- | ------- | -- | ----------------------------------------------------- | 395| isPrivacyMode | boolean | 是 | 窗口是否为隐私模式。true表示模式开启;false表示模式关闭。 | 396 397**返回值:** 398 399| 类型 | 说明 | 400| ------------------- | ------------------------ | 401| Promise<void> | Promise对象。无返回结果的Promise对象。 | 402 403**错误码:** 404 405以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 406 407| 错误码ID | 错误信息 | 408| ------- | -------------------------------- | 409| 201 | The application does not have permission to call the interface. | 410| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 411 412**示例:** 413 414```ts 415import { UIExtensionContentSession, UIExtensionAbility, Want } from '@kit.AbilityKit'; 416import { BusinessError } from '@kit.BasicServicesKit'; 417 418export default class UIExtAbility extends UIExtensionAbility { 419 // ... 420 421 onSessionCreate(want: Want, session: UIExtensionContentSession): void { 422 let isPrivacyMode: boolean = true; 423 try { 424 session.setWindowPrivacyMode(isPrivacyMode) 425 .then(() => { 426 console.info(`Succeeded in setting window to privacy mode.`); 427 }) 428 .catch((err: BusinessError) => { 429 console.error(`Failed to set window to privacy mode, code: ${err.code}, msg: ${err.message}`); 430 }); 431 } catch (e) { 432 let code = (e as BusinessError).code; 433 let msg = (e as BusinessError).message; 434 console.error(`Failed to set window to privacy mode, code: ${code}, msg: ${msg}`); 435 } 436 } 437 438 // ... 439} 440``` 441 442## UIExtensionContentSession.setWindowPrivacyMode 443 444setWindowPrivacyMode(isPrivacyMode: boolean, callback: AsyncCallback<void>): void 445 446设置窗口是否为隐私模式。设置为隐私模式的窗口,窗口内容将无法被截屏或录屏。使用callback异步回调。 447 448**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 449 450**需要权限**:ohos.permission.PRIVACY_WINDOW 451 452**参数:** 453 454| 参数名 | 类型 | 必填 | 说明 | 455| ------------- | ------------------------- | -- | ------------------------------------------------------ | 456| isPrivacyMode | boolean | 是 | 窗口是否为隐私模式。true表示模式开启;false表示模式关闭。 | 457| callback | AsyncCallback<void> | 是 | 回调函数。当设置成功,err为undefined,否则为错误对象。 | 458 459**错误码:** 460 461以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 462 463| 错误码ID | 错误信息 | 464| ------- | -------------------------------- | 465| 201 | The application does not have permission to call the interface. | 466| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 467 468**示例:** 469 470```ts 471import { UIExtensionContentSession, UIExtensionAbility, Want } from '@kit.AbilityKit'; 472import { BusinessError } from '@kit.BasicServicesKit'; 473 474export default class UIExtAbility extends UIExtensionAbility { 475 // ... 476 477 onSessionCreate(want: Want, session: UIExtensionContentSession): void { 478 let isPrivacyMode: boolean = true; 479 try { 480 session.setWindowPrivacyMode(isPrivacyMode, (err: BusinessError) => { 481 if (err) { 482 console.error(`Failed to set window to privacy mode, code: ${err.code}, msg: ${err.message}`); 483 return; 484 } 485 console.info(`Succeeded in setting window to privacy mode.`); 486 }); 487 } catch (e) { 488 let code = (e as BusinessError).code; 489 let msg = (e as BusinessError).message; 490 console.error(`Failed to set window to privacy mode, code: ${code}, msg: ${msg}`); 491 } 492 } 493 494 // ... 495} 496``` 497 498## UIExtensionContentSession.startAbilityByType<sup>11+</sup> 499 500startAbilityByType(type: string, wantParam: Record<string, Object>, 501 abilityStartCallback: AbilityStartCallback, callback: AsyncCallback\<void>): void 502 503通过type隐式启动UIExtensionAbility。使用callback异步回调。仅支持处于前台的应用调用。 504 505**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 506 507**参数:** 508 509| 参数名 | 类型 | 必填 | 说明 | 510| -------- | -------- | -------- | -------- | 511| type | string | 是 | 显示拉起的UIExtensionAbility类型<!--Del-->,取值详见[通过startAbilityByType接口拉起垂类面板](../../application-models/start-intent-panel.md#匹配规则)<!--DelEnd-->。 | 512| wantParam | Record<string, Object> | 是 | 表示扩展参数。 | 513| abilityStartCallback | [AbilityStartCallback](js-apis-inner-application-abilityStartCallback.md) | 是 | 回调函数,返回启动失败后的详细错误信息。 | 514| callback | AsyncCallback\<void> | 是 |回调函数。当启动Ability成功,err为undefined,否则为错误对象。 | 515 516**错误码:** 517 518以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。 519 520| 错误码ID | 错误信息 | 521| ------- | -------------------------------- | 522| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 523| 16000050 | Internal error. | 524 525**示例:** 526 527```ts 528import { UIExtensionContentSession, UIExtensionAbility, Want, common } from '@kit.AbilityKit'; 529import { BusinessError } from '@kit.BasicServicesKit'; 530 531export default class UIExtAbility extends UIExtensionAbility { 532 // ... 533 534 onSessionCreate(want: Want, session: UIExtensionContentSession): void { 535 let wantParams: Record<string, Object> = { 536 'sceneType': 1 537 }; 538 let abilityStartCallback: common.AbilityStartCallback = { 539 onError: (code: number, name: string, message: string) => { 540 console.error(`onError, code: ${code}, name: ${name}, msg: ${message}`); 541 }, 542 onResult: (result: common.AbilityResult) => { 543 console.info(`onResult, result: ${JSON.stringify(result)}`); 544 } 545 }; 546 547 session.startAbilityByType('test', wantParams, abilityStartCallback, (err: BusinessError) => { 548 if (err) { 549 console.error(`Failed to startAbilityByType, code: ${err.code}, msg: ${err.message}`); 550 return; 551 } 552 console.info(`Succeeded in startAbilityByType`); 553 }); 554 } 555 556 // ... 557} 558``` 559 560## UIExtensionContentSession.startAbilityByType<sup>11+</sup> 561 562startAbilityByType(type: string, wantParam: Record<string, Object>, 563 abilityStartCallback: AbilityStartCallback): Promise\<void> 564 565通过type隐式启动UIExtensionAbility。使用Promise异步回调。仅支持处于前台的应用调用。 566 567**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 568 569**参数:** 570 571| 参数名 | 类型 | 必填 | 说明 | 572| -------- | -------- | -------- | -------- | 573| type | string | 是 | 显示拉起的UIExtensionAbility类型<!--Del-->,取值详见[通过startAbilityByType接口拉起垂类面板](../../application-models/start-intent-panel.md#匹配规则)<!--DelEnd-->。 | 574| wantParam | Record<string, Object> | 是 | 表示扩展参数。 | 575| abilityStartCallback | [AbilityStartCallback](js-apis-inner-application-abilityStartCallback.md) | 是 | 回调函数,返回启动失败后的详细错误信息。 | 576 577**返回值:** 578 579| 类型 | 说明 | 580| -------- | -------- | 581| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 582 583**错误码:** 584 585以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。 586 587| 错误码ID | 错误信息 | 588| ------- | -------------------------------- | 589| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 590| 16000050 | Internal error. | 591 592**示例:** 593 594```ts 595import { UIExtensionContentSession, UIExtensionAbility, Want, common } from '@kit.AbilityKit'; 596import { BusinessError } from '@kit.BasicServicesKit'; 597 598export default class UIExtAbility extends UIExtensionAbility { 599 // ... 600 601 onSessionCreate(want: Want, session: UIExtensionContentSession): void { 602 let wantParams: Record<string, Object> = { 603 'sceneType': 1 604 }; 605 let abilityStartCallback: common.AbilityStartCallback = { 606 onError: (code: number, name: string, message: string) => { 607 console.error(`onError, code: ${code}, name: ${name}, msg: ${message}`); 608 }, 609 onResult: (result: common.AbilityResult) => { 610 console.info(`onResult, result: ${JSON.stringify(result)}`); 611 } 612 }; 613 614 session.startAbilityByType('test', wantParams, abilityStartCallback) 615 .then(() => { 616 console.info(`Succeeded in startAbilityByType`); 617 }) 618 .catch((err: BusinessError) => { 619 console.error(`Failed to startAbilityByType, code: ${err.code}, msg: ${err.message}`); 620 }); 621 } 622 623 // ... 624} 625``` 626 627## UIExtensionContentSession.getUIExtensionWindowProxy<sup>12+</sup> 628 629getUIExtensionWindowProxy(): uiExtension.WindowProxy 630 631获取UIExtension窗口代理。 632 633**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 634 635**返回值:** 636 637| 类型 | 说明 | 638| -------- | -------- | 639| uiExtension.WindowProxy | 返回UIExtension的窗口代理。 | 640 641**错误码:** 642 643以下错误码详细介绍请参考[元能力子系统错误码](errorcode-ability.md)。 644 645| 错误码ID | 错误信息 | 646| ------- | -------------------------------- | 647| 16000050 | Internal error. | 648 649**示例:** 650 651```ts 652// Index.ets 653import { UIExtensionContentSession } from '@kit.AbilityKit'; 654import uiExtension from '@ohos.arkui.uiExtension'; 655 656@Entry() 657@Component 658struct Extension { 659 storage: LocalStorage | undefined = this.getUIContext().getSharedLocalStorage(); 660 @State message: string = 'EmbeddedUIExtensionAbility Index'; 661 private session: UIExtensionContentSession | undefined = this.storage?.get<UIExtensionContentSession>('session'); 662 private extensionWindow: uiExtension.WindowProxy | undefined = this.session?.getUIExtensionWindowProxy(); 663 664 aboutToAppear(): void { 665 this.extensionWindow?.on('windowSizeChange', (size) => { 666 console.info(`size = ${JSON.stringify(size)}`); 667 }); 668 this.extensionWindow?.on('avoidAreaChange', (info) => { 669 console.info(`type = ${JSON.stringify(info.type)}, area = ${JSON.stringify(info.area)}`); 670 }); 671 } 672 673 aboutToDisappear(): void { 674 this.extensionWindow?.off('windowSizeChange'); 675 this.extensionWindow?.off('avoidAreaChange'); 676 } 677 678 build() { 679 Column() { 680 Text(this.message) 681 .fontSize(20) 682 .fontWeight(FontWeight.Bold) 683 } 684 .width('100%') 685 } 686} 687```