1# ServiceExtAbilityContext 2 3 4>  **说明:** 5> 6> 本模块首批接口从API version 9开始支持。API 9当前为Canary版本,仅供使用,不保证接口可稳定调用。 7 8 9## 属性 10 11**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 12 13| 名称 | 参数类型 | 可读 | 可写 | 说明 | 14| -------- | -------- | -------- | -------- | -------- | 15| extensionAbilityInfo | ExtensionAbilityInfo | 是 | 否 | ExtensionAbility信息。 | 16 17 18## startAbility 19 20startAbility(want: Want, callback: AsyncCallback<void>): void 21 22启动Ability。 23 24**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 25 26**参数**: 27 28| 参数名 | 类型 | 必填 | 说明 | 29| -------- | -------- | -------- | -------- | 30| want | [Want](js-apis-featureAbility.md#Want) | 是 | 启动Ability的want信息。 | 31| callback | AsyncCallback<void> | 是 | callback形式返回启动结果。 | 32 33**示例**: 34 35```js 36var want = { 37 "deviceId": "", 38 "bundleName": "com.extreme.test", 39 "abilityName": "com.extreme.test.MainAbility" 40}; 41this.context.startAbility(want, (error) => { 42 console.log("error.code = " + error.code) 43}) 44``` 45 46## startAbility 47 48startAbility(want: Want, options: StartOptions, callback: AsyncCallback<void>): void 49 50启动Ability(callback形式)。 51 52**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 53 54**参数**: 55 56| 参数名 | 类型 | 必填 | 说明 | 57| -------- | -------- | -------- | -------- | 58| want | [Want](js-apis-featureAbility.md#Want) | 是 | 启动Ability的want信息。 | 59| options | StartOptions | 是 | 启动Ability所携带的参数。 | 60| callback | AsyncCallback<void> | 是 | callback形式返回启动结果。 | 61 62**示例**: 63 64```js 65var want = { 66 "deviceId": "", 67 "bundleName": "com.extreme.test", 68 "abilityName": "com.extreme.test.MainAbility" 69}; 70var options = { 71 windowMode: 0, 72}; 73this.context.startAbility(want, options, (error) => { 74 console.log("error.code = " + error.code) 75}) 76``` 77 78 79## startAbility 80 81startAbility(want: Want, options: StartOptions): Promise<void> 82 83启动Ability(Promise形式)。 84 85**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 86 87**参数**: 88 89| 参数名 | 类型 | 必填 | 说明 | 90| -------- | -------- | -------- | -------- | 91| want | [Want](js-apis-featureAbility.md#Want) | 是 | 启动Ability的want信息。 | 92| options | StartOptions | 是 | 启动Ability所携带的参数。 | 93 94**返回值**: 95 96| 类型 | 说明 | 97| -------- | -------- | 98| Promise<void> | Promise形式返回启动结果。 | 99 100**示例**: 101```js 102var want = { 103 "deviceId": "", 104 "bundleName": "com.extreme.test", 105 "abilityName": "com.extreme.test.MainAbility" 106}; 107var options = { 108 windowMode: 0, 109}; 110this.context.startAbility(want, options) 111.then((data) => { 112 console.log('Operation successful.') 113}).catch((error) => { 114 console.log('Operation failed.'); 115}) 116``` 117 118## startAbilityWithAccount 119 120startAbilityWithAccount(want: Want, accountId: number, callback: AsyncCallback\<void>): void 121 122通过账户启动Ability(callback形式)。 123 124**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 125 126**参数**: 127 128| 参数名 | 类型 | 必填 | 说明 | 129| -------- | -------- | -------- | -------- | 130| want | [Want](js-apis-featureAbility.md#Want) | 是 | 启动Ability的want信息。 | 131| accountId | number | 是 | 账户ID。 | 132| callback | AsyncCallback<void> | 是 | callback形式返回启动结果。 | 133 134**示例**: 135 136```js 137var want = { 138 "deviceId": "", 139 "bundleName": "com.extreme.test", 140 "abilityName": "com.extreme.test.MainAbility" 141}; 142var accountId = 11; 143this.context.startAbility(want, accountId, (error) => { 144 console.log("error.code = " + error.code) 145}) 146``` 147 148## startAbilityWithAccount 149 150startAbilityWithAccount(want: Want, accountId: number, options: StartOptions, callback: AsyncCallback\<void>): void 151 152通过账户启动Ability(callback形式)。 153 154**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 155 156**参数**: 157 158| 参数名 | 类型 | 必填 | 说明 | 159| -------- | -------- | -------- | -------- | 160| want | [Want](js-apis-featureAbility.md#Want) | 是 | 启动Ability的want信息。 | 161| accountId | number | 是 | 账户ID。 | 162| options | StartOptions | 是 | 启动Ability所携带的参数。 | 163| callback | AsyncCallback<void> | 是 | callback形式返回启动结果。 | 164 165**示例**: 166 167```js 168var want = { 169 "deviceId": "", 170 "bundleName": "com.extreme.test", 171 "abilityName": "com.extreme.test.MainAbility" 172}; 173var options = { 174 windowMode: 0, 175}; 176var accountId = 11; 177this.context.startAbility(want, accountId, options, (error) => { 178 console.log("error.code = " + error.code) 179}) 180``` 181 182 183## startAbilityWithAccount 184 185startAbilityWithAccount(want: Want, accountId: number, options?: StartOptions): Promise\<void> 186 187通过账户启动Ability(Promise形式)。 188 189**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 190 191**参数**: 192 193| 参数名 | 类型 | 必填 | 说明 | 194| -------- | -------- | -------- | -------- | 195| want | [Want](js-apis-featureAbility.md#Want) | 是 | 启动Ability的want信息。 | 196| accountId | number | 是 | 账户ID。 | 197| options | StartOptions | 否 | 启动Ability所携带的参数。 | 198 199**返回值**: 200 201| 类型 | 说明 | 202| -------- | -------- | 203| Promise<void> | Promise形式返回启动结果。 | 204 205**示例**: 206```js 207var want = { 208 "deviceId": "", 209 "bundleName": "com.extreme.test", 210 "abilityName": "com.extreme.test.MainAbility" 211}; 212var options = { 213 windowMode: 0, 214}; 215var accountId = 11; 216this.context.startAbility(want, accountId, options) 217.then((data) => { 218 console.log('Operation successful.') 219}).catch((error) => { 220 console.log('Operation failed.'); 221}) 222``` 223 224## terminateSelf 225 226terminateSelf(callback: AsyncCallback<void>): void 227 228停止Ability自身(callback形式)。 229 230**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 231 232**参数**: 233 234| 参数名 | 类型 | 必填 | 说明 | 235| -------- | -------- | -------- | -------- | 236| callback | AsyncCallback<void> | 是 | 回调函数,返回接口调用是否成功的结果。 | 237 238**示例**: 239 240```js 241this.context.terminateSelf((err) => { 242 console.log('terminateSelf result:' + JSON.stringify(err)); 243}); 244``` 245 246## terminateSelf 247 248terminateSelf(): Promise<void> 249 250停止Ability自身(Promise形式)。 251 252**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 253 254**返回值**: 255 256| 类型 | 说明 | 257| -------- | -------- | 258| Promise<void> | 返回一个Promise,包含接口的结果。 | 259 260**示例**: 261 262```js 263this.context.terminateSelf(want).then((data) => { 264 console.log('success:' + JSON.stringify(data)); 265}).catch((error) => { 266 console.log('failed:' + JSON.stringify(error)); 267}); 268``` 269 270 271## connectAbility 272 273connectAbility(want: Want, options: ConnectOptions): number 274 275使用AbilityInfo.AbilityType.SERVICE模板将当前能力连接到一个能力。 276 277**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 278 279**参数**: 280 281| 参数名 | 类型 | 必填 | 说明 | 282| -------- | -------- | -------- | -------- | 283| want | [Want](js-apis-featureAbility.md#Want) | 是 | 启动Ability的want信息。 | 284| options | ConnectOptions | 是 | 连接的远端对象实例 | 285 286**返回值**: 287 288| 类型 | 说明 | 289| -------- | -------- | 290| number | 连接Ability的代码 | 291 292**示例**: 293```js 294var want = { 295 "deviceId": "", 296 "bundleName": "com.extreme.test", 297 "abilityName": "com.extreme.test.MainAbility" 298} 299var options = { 300 onConnect: (elementName, remote) => { 301 console.log('connectAbility onConnect, elementName: ' + elementName + ', remote: ' remote) 302 }, 303 onDisconnect: (elementName) => { 304 console.log('connectAbility onDisconnect, elementName: ' + elementName) 305 }, 306 onFailed: (code) => { 307 console.log('connectAbility onFailed, code: ' + code) 308 } 309} 310this.context.connectAbility(want, options) { 311 console.log('code: ' + code) 312} 313``` 314 315## connectAbilityWithAccount 316 317connectAbilityWithAccount(want: Want, accountId: number, options: ConnectOptions): number 318 319使用AbilityInfo.AbilityType.SERVICE模板和账户ID将当前能力连接到一个能力。 320 321**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 322 323**参数**: 324 325| 参数名 | 类型 | 必填 | 说明 | 326| -------- | -------- | -------- | -------- | 327| want | [Want](js-apis-featureAbility.md#Want) | 是 | 启动Ability的want信息。 | 328| accountId | number | 是 | 账户ID | 329| options | ConnectOptions | 是 | 连接的远端对象实例 | 330 331**返回值**: 332 333| 类型 | 说明 | 334| -------- | -------- | 335| number | 连接Ability的代码 | 336 337**示例**: 338```js 339var want = { 340 "deviceId": "", 341 "bundleName": "com.extreme.test", 342 "abilityName": "com.extreme.test.MainAbility" 343} 344var accountId = 111; 345var options = { 346 onConnect: (elementName, remote) => { 347 console.log('connectAbility onConnect, elementName: ' + elementName + ', remote: ' remote) 348 }, 349 onDisconnect: (elementName) => { 350 console.log('connectAbility onDisconnect, elementName: ' + elementName) 351 }, 352 onFailed: (code) => { 353 console.log('connectAbility onFailed, code: ' + code) 354 } 355} 356this.context.connectAbility(want, accountId, options) { 357 console.log('code: ' + code) 358} 359``` 360 361## disconnectAbility 362 363disconnectAbility(connection: number, callback:AsyncCallback\<void>): void 364 365断开Ability连接(callback形式)。 366 367**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 368 369**参数**: 370 371| 参数名 | 类型 | 必填 | 说明 | 372| -------- | -------- | -------- | -------- | 373| connection | number | 是 | 连接的Ability的编号。 | 374| callback | AsyncCallback<void> | 是 | 断开Ability连接的回调函数。 | 375 376**示例**: 377 378```js 379var connection = 111; 380this.context.disconnectAbility(connection, () => { 381 console.log('disconnection') 382}) 383``` 384 385## disconnectAbility 386 387disconnectAbility(connection: number): Promise\<void> 388 389断开Ability连接(Promise形式)。 390 391**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 392 393**参数**: 394 395| 参数名 | 类型 | 必填 | 说明 | 396| -------- | -------- | -------- | -------- | 397| connection | number | 是 | 连接的Ability的编号。 | 398 399**返回值**: 400 401| 类型 | 说明 | 402| -------- | -------- | 403| Promise<void> | 返回一个Promise。 | 404 405**示例**: 406 407```js 408var connection = 111; 409this.context.disconnectAbility(connection).then(() => { 410 console.log('disconnected successfully') 411}).catch((err) => { 412 console.log('disconnected failed') 413}) 414```