1# @ohos.app.ability.ActionExtensionAbility (自定义服务扩展能力) 2 3ActionExtensionAbility是为开发者提供的自定义操作业务模板,继承自[UIExtensionAbility](js-apis-app-ability-uiExtensionAbility.md)。ActionExtension主要用于查看宿主应用中的内容以及对其进行对应处理。例如,添加一个书签、将选中的文本翻译成其他语言、在当前页面编辑图像等。 4 5> **说明:** 6> 7> 本模块首批接口从API version 10 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8> 本模块接口仅可在Stage模型下使用。 9 10## 场景介绍 11 12以翻译文本为例。首先需要创建请求发起方,再创建出ActionExtension,请求发起方需要将翻译的文本发送给ActionExtension,ActionExtension接收到文本后,需要将接收的文本进行翻译,翻译后的文本再发送给请求发起方。 13 14## 导入模块 15 16```ts 17import ActionExtensionAbility from '@ohos.app.ability.ActionExtensionAbility'; 18``` 19 20## 属性 21 22**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 23 24| 名称 | 类型 | 可读 | 可写 | 说明 | 25| -------- | -------- | -------- | -------- | -------- | 26| context | [UIExtensionContext](js-apis-inner-application-uiExtensionContext.md) | 是 | 否 | 上下文。 | 27 28## ActionExtensionAbility.onCreate 29 30onCreate(): void 31 32ActionExtensionAbility创建时回调,执行初始化业务逻辑操作。 33 34**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 35 36## ActionExtensionAbility.onSessionCreate 37 38onSessionCreate(want: Want, session: UIExtensionContentSession): void 39 40当ActionExtensionAbility界面内容对象创建后调用。 41 42**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 43 44**参数:** 45 46| 参数名 | 类型 | 必填 | 说明 | 47| -------- | -------- | -------- | -------- | 48| want | [Want](js-apis-app-ability-want.md) | 是 | 当前ActionExtensionAbility的Want类型信息,包括ability名称、bundle名称等。 | 49| session | [UIExtensionContentSession](js-apis-app-ability-uiExtensionContentSession.md) | 是 | ActionExtensionAbility界面内容相关信息。 | 50 51## ActionExtensionAbility.onSessionDestroy 52 53onSessionDestroy(session: UIExtensionContentSession): void 54 55当ActionExtensionAbility界面内容对象销毁后调用。 56 57**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 58 59**参数:** 60 61| 参数名 | 类型 | 必填 | 说明 | 62| -------- | -------- | -------- | -------- | 63| session | [UIExtensionContentSession](js-apis-app-ability-uiExtensionContentSession.md) | 是 | ActionExtensionAbility界面内容相关信息。 | 64 65## ActionExtensionAbility.onForeground 66 67onForeground(): void; 68 69ActionExtensionAbility生命周期回调,当ActionExtensionAbility从后台转到前台时触发。 70 71**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 72 73## ActionExtensionAbility.onBackground 74 75onBackground(): void; 76 77ActionExtensionAbility生命周期回调,当ActionExtensionAbility从前台转到后台时触发。 78 79**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 80 81## ActionExtensionAbility.onDestroy 82 83onDestroy(): void | Promise<void>; 84 85ActionExtensionAbility生命周期回调,在销毁时回调,执行资源清理等操作。 86在执行完onDestroy生命周期回调后,应用可能会退出,从而可能导致onDestroy中的异步函数未能正确执行,比如异步写入数据库。可以使用异步生命周期,以确保异步onDestroy完成后再继续后续的生命周期。 87 88**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 89 90## 创建ActionExtensionAbility 91 92在DevEco Studio工程中手动新建一个ActionExtensionAbility,具体步骤如下: 93 941. 在工程Module对应的ets目录下,右键选择“New > Directory”,新建一个目录并命名为ActionExtAbility。 95 962. 在ActionExtAbility目录,右键选择“New > TypeScript File”,新建一个TypeScript文件并命名为ActionExtAbility.ts。 97 98 ``` 99 ├── ets 100 │ ├── ActionExtAbility 101 │ │ ├── ActionExtAbility.ts 102 └ 103 ``` 104 1053. ActionExtAbility.ts文件中,增加导入ActionExtensionAbility的依赖包,自定义类继承ActionExtensionAbility并实现生命周期回调。 106 107 ```ts 108 import ActionExtensionAbility from '@ohos.app.ability.ActionExtensionAbility'; 109 const TAG: string = "[ActionExtAbility]"; 110 111 export default class ActionExtAbility extends ActionExtensionAbility { 112 storage: LocalStorage; 113 message: string; 114 onCreate() { 115 console.info(TAG, `onCreate`); 116 } 117 118 onForeground() { 119 console.info(TAG, `ononForeground`); 120 } 121 122 onBackground() { 123 console.info(TAG, `onBackground`); 124 } 125 126 onSessionCreate(want, session) { 127 console.info(TAG, `onSessionCreate, want: ${want.abilityName}`); 128 this.message = want.parameters.shareMessages; 129 this.storage = new LocalStorage( 130 { 131 'session': session, 132 'messages': this.message 133 }); 134 session.loadContent('pages/Index', this.storage); 135 } 136 137 onSessionDestroy(session) { 138 console.info(TAG, `onSessionDestroy`); 139 } 140 141 onDestroy() { 142 console.info(TAG, `onDestroy`); 143 } 144 } 145 ``` 146 1474. 在工程Module对应的[module.json5配置文件](../../quick-start/module-configuration-file.md)中注册ActionExtensionAbility,type标签需要设置为“action”,srcEntry标签表示当前ExtensionAbility组件所对应的代码路径。 148 149 ```json 150 { 151 "module": { 152 ... 153 "extensionAbilities": [ 154 { 155 "name": "ActionExtAbility", 156 "icon": "$media:icon", 157 "description": "action", 158 "type": "action", 159 "exported": true, 160 "srcEntry": "./ets/ActionExtAbility/ActionExtAbility.ts" 161 } 162 ] 163 } 164 } 165 ``` 166