往期鸿蒙全套实战文章必看:(文中附带全栈鸿蒙学习资料)
@ohos.app.ability.UIExtensionContentSession (带界面扩展能力界面操作类)
UIExtensionContentSession是UIExtensionAbility加载界面内容时创建的实例对象,当UIExtensionComponent控件拉起指定的UIExtensionAbility时,UIExtensionAbility会创建UIExtensionContentSession对象,并通过onSessionCreate回调传递给开发者。一个UIExtensionComponent控件对应一个UIExtensionContentSession对象,提供界面加载,结果通知等方法。每个UIExtensionAbility的UIExtensionContentSession之间互不影响,可以各自进行操作。
说明
本模块首批接口从API version 10 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
本模块接口仅可在Stage模型下使用。
导入模块
import { UIExtensionContentSession } from '@kit.AbilityKit';
UIExtensionContentSession.loadContent
loadContent(path: string, storage?: LocalStorage): void
为当前UIExtensionComponent控件对应的窗口加载与LocalStorage相关联的具体页面内容。
系统能力: SystemCapability.Ability.AbilityRuntime.Core
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| path | string | 是 | 设置加载页面的路径。 |
| storage | LocalStorage | 否 | 存储单元,为应用程序范围内的可变状态属性和非可变状态属性提供存储。默认为空。 |
错误码:
以下错误码详细介绍
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
| 16000050 | Internal error. |
示例:
import { UIExtensionContentSession, UIExtensionAbility, Want } from '@kit.AbilityKit';
export default class UIExtAbility extends UIExtensionAbility {
// ...
onSessionCreate(want: Want, session: UIExtensionContentSession): void {
let storage: LocalStorage = new LocalStorage();
storage.setOrCreate('session', session);
session.loadContent('pages/Extension', storage);
}
// ...
}
UIExtensionContentSession.terminateSelf
terminateSelf(callback: AsyncCallback<void>): void
停止UIExtensionContentSession对应的窗口界面对象。使用callback异步回调。
系统能力:SystemCapability.Ability.AbilityRuntime.Core
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | AsyncCallback<void> | 是 | 回调函数。当停止UIExtensionContentSession对应的窗口界面对象成功,err为undefined,否则为错误对象。 |
错误码:
以下错误码详细介绍
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
示例:
import { UIExtensionContentSession } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
let storage = LocalStorage.getShared();
@Entry(storage)
@Component
struct Index {
private session: UIExtensionContentSession | undefined =
storage.get<UIExtensionContentSession>('session');
build() {
RelativeContainer() {
Button('TerminateSelf')
.onClick(() => {
this.session?.terminateSelf((err: BusinessError) => {
if (err) {
console.error(`Failed to terminate self, code: ${err.code}, msg: ${err.message}`);
return;
}
console.info(`Successed in terminating self.`);
});
storage.clear();
})
}
.height('100%')
.width('100%')
}
}
UIExtensionContentSession.terminateSelf
terminateSelf(): Promise<void>
停止UIExtensionContentSession对应的窗口界面对象。使用Promise异步回调。
系统能力:SystemCapability.Ability.AbilityRuntime.Core
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象。无返回结果的Promise对象。 |
示例:
import { UIExtensionContentSession } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
let storage = LocalStorage.getShared();
@Entry(storage)
@Component
struct Index {
private session: UIExtensionContentSession | undefined =
storage.get<UIExtensionContentSession>('session');
build() {
RelativeContainer() {
Button('TerminateSelf')
.onClick(() => {
this.session?.terminateSelf()
.then(() => {
console.info(`Successed in terminating self.`);
})
.catch((err: BusinessError) => {
console.error(`Failed to terminate self, code: ${err.code}, msg: ${err.message}`);
});
storage.clear();
})
}
.height('100%')
.width('100%')
}
}
UIExtensionContentSession.terminateSelfWithResult
terminateSelfWithResult(parameter: AbilityResult, callback: AsyncCallback<void>): void
停止UIExtensionContentSession对应的窗口界面对象,并将结果返回给UIExtensionComponent控件。使用callback异步回调。
系统能力:SystemCapability.Ability.AbilityRuntime.Core
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| parameter | AbilityResult | 是 | 返回给UIExtensionComponent控件的信息。 |
| callback | AsyncCallback<void> | 是 | 回调函数。当停止成功,err为undefined,否则为错误对象。 |
错误码:
以下错误码详细介绍
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
示例:
import { UIExtensionContentSession, common } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
let storage = LocalStorage.getShared();
@Entry(storage)
@Component
struct Index {
private session: UIExtensionContentSession | undefined =
storage.get<UIExtensionContentSession>('session');
build() {
RelativeContainer() {
Button('TerminateSelfWithResult')
.onClick(() => {
let abilityResult: common.AbilityResult = {
resultCode: 0,
want: {
bundleName: 'com.ohos.uiextensioncontentsession',
parameters: {
'result': 123456
}
}
};
this.session?.terminateSelfWithResult(abilityResult, (err: BusinessError) => {
if (err) {
console.error(`Failed to terminate self with result, code: ${err.code}, msg: ${err.message}`);
return;
}
console.info(`Successed in terminating self with result.`);
});
storage.clear();
})
}
.height('100%')
.width('100%')
}
}
UIExtensionContentSession.terminateSelfWithResult
terminateSelfWithResult(parameter: AbilityResult): Promise<void>
停止UIExtensionContentSession对应的窗口界面对象,并将结果返回给UIExtensionComponent控件。使用Promise异步回调。
系统能力:SystemCapability.Ability.AbilityRuntime.Core
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| parameter | AbilityResult | 是 | 返回给UIExtensionComponent控件的信息。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象。无返回结果的Promise对象。 |
错误码:
以下错误码详细介绍
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
示例:
import { UIExtensionContentSession, common } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
let storage = LocalStorage.getShared();
@Entry(storage)
@Component
struct Index {
private session: UIExtensionContentSession | undefined =
storage.get<UIExtensionContentSession>('session');
build() {
RelativeContainer() {
Button('TerminateSelfWithResult')
.onClick(() => {
let abilityResult: common.AbilityResult = {
resultCode: 0,
want: {
bundleName: 'com.ohos.uiextensioncontentsession',
parameters: {
'result': 123456
}
}
};
this.session?.terminateSelfWithResult(abilityResult)
.then(() => {
console.info(`Successed in terminating self with result.`);
})
.catch((err: BusinessError) => {
console.error(`Failed to terminate self with result, code: ${err.code}, msg: ${err.message}`);
});
storage.clear();
})
}
.height('100%')
.width('100%')
}
}
UIExtensionContentSession.setWindowPrivacyMode
setWindowPrivacyMode(isPrivacyMode: boolean): Promise<void>
设置窗口是否为隐私模式。设置为隐私模式的窗口,窗口内容将无法被截屏或录屏。使用Promise异步回调。
系统能力: SystemCapability.Ability.AbilityRuntime.Core
需要权限: ohos.permission.PRIVACY_WINDOW
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| isPrivacyMode | boolean | 是 | 窗口是否为隐私模式。true表示模式开启;false表示模式关闭。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象。无返回结果的Promise对象。 |
错误码:
以下错误码详细介绍
| 错误码ID | 错误信息 |
|---|---|
| 201 | The application does not have permission to call the interface. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
示例:
import { UIExtensionContentSession, UIExtensionAbility, Want } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
export default class UIExtAbility extends UIExtensionAbility {
// ...
onSessionCreate(want: Want, session: UIExtensionContentSession): void {
let isPrivacyMode: boolean = true;
try {
session.setWindowPrivacyMode(isPrivacyMode)
.then(() => {
console.info(`Successed in setting window to privacy mode.`);
})
.catch((err: BusinessError) => {
console.error(`Failed to set window to privacy mode, code: ${err.code}, msg: ${err.message}`);
});
} catch (e) {
let code = (e as BusinessError).code;
let msg = (e as BusinessError).message;
console.error(`Failed to set window to privacy mode, code: ${code}, msg: ${msg}`);
}
}
// ...
}
UIExtensionContentSession.setWindowPrivacyMode
setWindowPrivacyMode(isPrivacyMode: boolean, callback: AsyncCallback<void>): void
设置窗口是否为隐私模式。设置为隐私模式的窗口,窗口内容将无法被截屏或录屏。使用callback异步回调。
系统能力: SystemCapability.Ability.AbilityRuntime.Core
需要权限: ohos.permission.PRIVACY_WINDOW
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| isPrivacyMode | boolean | 是 | 窗口是否为隐私模式。true表示模式开启;false表示模式关闭。 |
| callback | AsyncCallback<void> | 是 | 回调函数。当设置成功,err为undefined,否则为错误对象。 |
错误码:
以下错误码详细介绍
| 错误码ID | 错误信息 |
|---|---|
| 201 | The application does not have permission to call the interface. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
示例:
import { UIExtensionContentSession, UIExtensionAbility, Want } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
export default class UIExtAbility extends UIExtensionAbility {
// ...
onSessionCreate(want: Want, session: UIExtensionContentSession): void {
let isPrivacyMode: boolean = true;
try {
session.setWindowPrivacyMode(isPrivacyMode, (err: BusinessError) => {
if (err) {
console.error(`Failed to set window to privacy mode, code: ${err.code}, msg: ${err.message}`);
return;
}
console.info(`Successed in setting window to privacy mode.`);
});
} catch (e) {
let code = (e as BusinessError).code;
let msg = (e as BusinessError).message;
console.error(`Failed to set window to privacy mode, code: ${code}, msg: ${msg}`);
}
}
// ...
}
UIExtensionContentSession.startAbilityByType11+
startAbilityByType(type: string, wantParam: Record<string, Object>,
abilityStartCallback: AbilityStartCallback, callback: AsyncCallback<void>): void
通过type隐式启动UIExtensionAbility。使用callback异步回调。仅支持处于前台的应用调用。
系统能力:SystemCapability.Ability.AbilityRuntime.Core
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 显示拉起的UIExtensionAbility类型。 |
| wantParam | Record<string, Object> | 是 | 表示扩展参数。 |
| abilityStartCallback | AbilityStartCallback | 是 | 回调函数,返回启动失败后的详细错误信息。 |
| callback | AsyncCallback<void> | 是 | 回调函数。当启动Ability成功,err为undefined,否则为错误对象。 |
错误码:
以下错误码详细介绍
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
| 16000050 | Internal error. |
示例:
import { UIExtensionContentSession, UIExtensionAbility, Want, common } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
export default class UIExtAbility extends UIExtensionAbility {
// ...
onSessionCreate(want: Want, session: UIExtensionContentSession): void {
let wantParams: Record<string, Object> = {
'sceneType': 1
};
let abilityStartCallback: common.AbilityStartCallback = {
onError: (code: number, name: string, message: string) => {
console.error(`onError, code: ${code}, name: ${name}, msg: ${message}`);
},
onResult: (result: common.AbilityResult) => {
console.info(`onResult, result: ${JSON.stringify(result)}`);
}
};
session.startAbilityByType('test', wantParams, abilityStartCallback, (err: BusinessError) => {
if (err) {
console.error(`Failed to startAbilityByType, code: ${err.code}, msg: ${err.message}`);
return;
}
console.info(`Successed in startAbilityByType`);
});
}
// ...
}
UIExtensionContentSession.startAbilityByType11+
startAbilityByType(type: string, wantParam: Record<string, Object>,
abilityStartCallback: AbilityStartCallback): Promise<void>
通过type隐式启动UIExtensionAbility。使用Promise异步回调。仅支持处于前台的应用调用。
系统能力:SystemCapability.Ability.AbilityRuntime.Core
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 显示拉起的UIExtensionAbility类型。 |
| wantParam | Record<string, Object> | 是 | 表示扩展参数。 |
| abilityStartCallback | AbilityStartCallback | 是 | 回调函数,返回启动失败后的详细错误信息。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象。无返回结果的Promise对象。 |
错误码:
以下错误码详细介绍
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
| 16000050 | Internal error. |
示例:
import { UIExtensionContentSession, UIExtensionAbility, Want, common } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
export default class UIExtAbility extends UIExtensionAbility {
// ...
onSessionCreate(want: Want, session: UIExtensionContentSession): void {
let wantParams: Record<string, Object> = {
'sceneType': 1
};
let abilityStartCallback: common.AbilityStartCallback = {
onError: (code: number, name: string, message: string) => {
console.error(`onError, code: ${code}, name: ${name}, msg: ${message}`);
},
onResult: (result: common.AbilityResult) => {
console.info(`onResult, result: ${JSON.stringify(result)}`);
}
};
session.startAbilityByType('test', wantParams, abilityStartCallback)
.then(() => {
console.info(`Successed in startAbilityByType`);
})
.catch((err: BusinessError) => {
console.error(`Failed to startAbilityByType, code: ${err.code}, msg: ${err.message}`);
});
}
// ...
}
UIExtensionContentSession.getUIExtensionWindowProxy12+
getUIExtensionWindowProxy(): uiExtension.WindowProxy
获取UIExtension窗口代理。
系统能力:SystemCapability.Ability.AbilityRuntime.Core
返回值:
| 类型 | 说明 |
|---|---|
| uiExtension.WindowProxy | 返回UIExtension的窗口代理。 |
错误码:
以下错误码详细介绍
| 错误码ID | 错误信息 |
|---|---|
| 16000050 | Internal error. |
示例:
// Index.ets
import { UIExtensionContentSession } from '@kit.AbilityKit';
import uiExtension from '@ohos.arkui.uiExtension';
let storage = LocalStorage.getShared();
@Entry(storage)
@Component
struct Extension {
@State message: string = 'EmbeddedUIExtensionAbility Index';
private session: UIExtensionContentSession | undefined = storage.get<UIExtensionContentSession>('session');
private extensionWindow: uiExtension.WindowProxy | undefined = this.session?.getUIExtensionWindowProxy();
aboutToAppear(): void {
this.extensionWindow?.on('windowSizeChange', (size) => {
console.info(`size = ${JSON.stringify(size)}`);
});
this.extensionWindow?.on('avoidAreaChange', (info) => {
console.info(`type = ${JSON.stringify(info.type)}, area = ${JSON.stringify(info.area)}`);
});
}
aboutToDisappear(): void {
this.extensionWindow?.off('windowSizeChange');
this.extensionWindow?.off('avoidAreaChange');
}
build() {
Column() {
Text(this.message)
.fontSize(20)
.fontWeight(FontWeight.Bold)
}
.width('100%')
}
}


2015

被折叠的 条评论
为什么被折叠?



