1# @ohos.ability.particleAbility (ParticleAbility模块) 2 3particleAbility模块提供了操作Data和Service类型的Ability的能力,包括启动、停止指定的particleAbility,获取dataAbilityHelper,连接、断连指定的ServiceAbility等。 4 5> **说明:** 6> 7> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8> 9> 本模块接口仅可在FA模型下使用。 10 11## 使用限制 12 13particleAbility模块用来对Data和Service类型的Ability进行操作。 14 15## 导入模块 16 17```ts 18import { particleAbility } from '@kit.AbilityKit'; 19``` 20 21## particleAbility.startAbility 22 23startAbility(parameter: StartAbilityParameter, callback: AsyncCallback\<void>): void 24 25启动指定的particleAbility。使用callback异步回调。 26 27> **说明:** 28> 29> 组件启动规则详见:[组件启动规则(FA模型)](../../application-models/component-startup-rules-fa.md)。 30 31**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel 32 33**参数:** 34 35| 参数名 | 类型 | 必填 | 说明 | 36| --------- | ----------------------------------------------- | ---- | ----------------- | 37| parameter | [StartAbilityParameter](js-apis-inner-ability-startAbilityParameter.md) | 是 | 表示启动的ability。 | 38| callback | AsyncCallback\<void> | 是 | 回调函数。当启动指定的particleAbility成功,err为undefined,否则为错误对象。 | 39 40**示例:** 41 42<!--code_no_check_fa--> 43```ts 44import { particleAbility, wantConstant } from '@kit.AbilityKit'; 45 46particleAbility.startAbility( 47 { 48 want: 49 { 50 action: 'ohos.want.action.home', 51 entities: ['entity.system.home'], 52 type: 'MIMETYPE', 53 flags: wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION, 54 deviceId: '', 55 bundleName: 'com.example.Data', 56 abilityName: 'com.example.Data.EntryAbility', 57 uri: '' 58 }, 59 }, 60 (error, data) => { 61 if (error && error.code !== 0) { 62 console.error(`startAbility fail, error: ${JSON.stringify(error)}`); 63 } else { 64 console.log(`startAbility success, data: ${JSON.stringify(data)}`); 65 } 66 }, 67); 68``` 69 70## particleAbility.startAbility 71 72startAbility(parameter: StartAbilityParameter): Promise\<void> 73 74启动指定的particleAbility。使用Promise异步回调。 75 76> **说明:** 77> 78> 组件启动规则详见:[组件启动规则(FA模型)](../../application-models/component-startup-rules-fa.md)。 79 80**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel 81 82**参数:** 83 84| 参数名 | 类型 | 必填 | 说明 | 85| --------- | ----------------------------------------------- | ---- | ----------------- | 86| parameter | [StartAbilityParameter](js-apis-inner-ability-startAbilityParameter.md) | 是 | 表示启动的ability。 | 87 88**返回值:** 89 90| 类型 | 说明 | 91| -------------- | ------------------------- | 92| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 93 94**示例:** 95 96<!--code_no_check_fa--> 97```ts 98import { particleAbility, wantConstant } from '@kit.AbilityKit'; 99 100particleAbility.startAbility( 101 { 102 want: 103 { 104 action: 'ohos.want.action.home', 105 entities: ['entity.system.home'], 106 type: 'MIMETYPE', 107 flags: wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION, 108 deviceId: '', 109 bundleName: 'com.example.Data', 110 abilityName: 'com.example.Data.EntryAbility', 111 uri: '' 112 }, 113 }, 114).then(() => { 115 console.info('particleAbility startAbility'); 116}); 117``` 118 119## particleAbility.terminateSelf 120 121terminateSelf(callback: AsyncCallback\<void>): void 122 123销毁当前particleAbility。使用callback异步回调。 124 125**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel 126 127**参数:** 128 129| 参数名 | 类型 | 必填 | 说明 | 130| -------- | -------------------- | ---- | -------------------- | 131| callback | AsyncCallback\<void> | 是 | 回调函数。当销毁当前particleAbility成功,err为undefined,否则为错误对象。 | 132 133**示例:** 134 135<!--code_no_check_fa--> 136```ts 137import { particleAbility } from '@kit.AbilityKit'; 138 139particleAbility.terminateSelf( 140 (error) => { 141 if (error && error.code !== 0) { 142 console.error(`terminateSelf fail, error: ${JSON.stringify(error)}`); 143 } 144 } 145); 146``` 147 148## particleAbility.terminateSelf 149 150terminateSelf(): Promise\<void> 151 152销毁当前particleAbility。使用Promise异步回调。 153 154**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel 155 156**返回值:** 157 158| 类型 | 说明 | 159| -------------- | ------------------------- | 160| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 161 162**示例:** 163 164<!--code_no_check_fa--> 165```ts 166import { particleAbility } from '@kit.AbilityKit'; 167 168particleAbility.terminateSelf().then(() => { 169 console.info('particleAbility terminateSelf'); 170}); 171``` 172 173 174 175## particleAbility.acquireDataAbilityHelper 176 177acquireDataAbilityHelper(uri: string): DataAbilityHelper 178 179获取dataAbilityHelper对象。 180 181> **说明:** 182> 183> 组件启动规则详见:[组件启动规则(FA模型)](../../application-models/component-startup-rules-fa.md)。 184> 跨应用访问dataAbility,对端应用需配置关联启动。 185 186**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel 187 188**参数:** 189 190| 参数名 | 类型 | 必填 | 说明 | 191| :--- | ------ | ---- | ------------------------ | 192| uri | string | 是 | 表示要打开的文件的路径。 | 193 194**返回值:** 195 196| 类型 | 说明 | 197| ----------------- | -------------------------------------------- | 198| [DataAbilityHelper](js-apis-inner-ability-dataAbilityHelper.md) | 用来协助其他Ability访问DataAbility的工具类。 | 199 200**示例:** 201 202<!--code_no_check_fa--> 203```ts 204import { particleAbility } from '@kit.AbilityKit'; 205 206let uri = ''; 207particleAbility.acquireDataAbilityHelper(uri); 208``` 209 210 211## particleAbility.startBackgroundRunning<sup>(deprecated)</sup> 212 213startBackgroundRunning(id: number, request: NotificationRequest, callback: AsyncCallback<void>): void 214 215向系统申请长时任务。使用callback异步回调。 216 217**需要权限**:ohos.permission.KEEP_BACKGROUND_RUNNING 218 219**系统能力**:SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask 220 221> **说明:** 222> 223> 从API version 9开始不再维护,建议使用[backgroundTaskManager.startBackgroundRunning](../apis-backgroundtasks-kit/js-apis-resourceschedule-backgroundTaskManager.md#backgroundtaskmanagerstartbackgroundrunning)替代。 224 225**参数:** 226 227 | 参数名 | 类型 | 必填 | 说明 | 228 | -------- | -------- | -------- | -------- | 229 | id | number | 是 | 长时任务通知id号。 | 230 | request | [NotificationRequest](../apis-notification-kit/js-apis-notification.md#notificationrequest) | 是 | 通知参数,用于显示通知栏的信息。 | 231 | callback | AsyncCallback<void> | 是 | 回调函数。当向系统申请长时任务成功,err为undefined,否则为错误对象。 | 232 233 **示例**: 234 235<!--code_no_check_fa--> 236```ts 237import { particleAbility, wantAgent } from '@kit.AbilityKit'; 238import { BusinessError } from '@kit.BasicServicesKit'; 239import notification from '@ohos.notification'; 240 241function callback(error: BusinessError, data: void) { 242 if (error && error.code !== 0) { 243 console.error(`Operation failed error: ${JSON.stringify(error)}`); 244 } else { 245 console.info(`Operation succeeded, data: ${data}`); 246 } 247} 248 249let wantAgentInfo: wantAgent.WantAgentInfo = { 250 wants: [ 251 { 252 bundleName: 'com.example.myapplication', 253 abilityName: 'EntryAbility' 254 } 255 ], 256 operationType: wantAgent.OperationType.START_ABILITY, 257 requestCode: 0, 258 wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] 259}; 260 261wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => { 262 let id = 1; 263 particleAbility.startBackgroundRunning(id, { 264 content: 265 { 266 contentType: notification.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, 267 normal: 268 { 269 title: 'title', 270 text: 'text' 271 } 272 }, 273 wantAgent: wantAgentObj 274 }, callback); 275}); 276``` 277 278## particleAbility.startBackgroundRunning<sup>(deprecated)</sup> 279 280startBackgroundRunning(id: number, request: NotificationRequest): Promise<void> 281 282向系统申请长时任务。使用Promise异步回调。 283 284**需要权限**:ohos.permission.KEEP_BACKGROUND_RUNNING 285 286**系统能力**:SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask 287 288> **说明:** 289> 290> 从API version 9开始不再维护,建议使用[backgroundTaskManager.startBackgroundRunning](../apis-backgroundtasks-kit/js-apis-resourceschedule-backgroundTaskManager.md#backgroundtaskmanagerstartbackgroundrunning-1)替代。 291 292**参数:** 293 294| 参数名 | 类型 | 必填 | 说明 | 295| -------- | -------- | -------- | -------- | 296| id | number | 是 | 长时任务通知id号。 | 297| request | [NotificationRequest](../apis-notification-kit/js-apis-notification.md#notificationrequest) | 是 | 通知参数,用于显示通知栏的信息。 | 298 299**返回值:** 300 301| 类型 | 说明 | 302| -------------- | ------------------------- | 303| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 304 305**示例**: 306 307<!--code_no_check_fa--> 308```ts 309import { particleAbility, wantAgent } from '@kit.AbilityKit'; 310import { BusinessError } from '@kit.BasicServicesKit'; 311import notification from '@ohos.notification'; 312 313let wantAgentInfo: wantAgent.WantAgentInfo = { 314 wants: [ 315 { 316 bundleName: 'com.example.myapplication', 317 abilityName: 'EntryAbility' 318 } 319 ], 320 operationType: wantAgent.OperationType.START_ABILITY, 321 requestCode: 0, 322 wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] 323}; 324 325wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => { 326 let id = 1; 327 particleAbility.startBackgroundRunning(id, { 328 content: 329 { 330 contentType: notification.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, 331 normal: 332 { 333 title: 'title', 334 text: 'text' 335 } 336 }, 337 wantAgent: wantAgentObj 338 }).then(() => { 339 console.info('Operation succeeded'); 340 }).catch((err: BusinessError) => { 341 console.error(`Operation failed cause: ${JSON.stringify(err)}`); 342 }); 343}); 344``` 345 346## particleAbility.cancelBackgroundRunning<sup>(deprecated)</sup> 347 348cancelBackgroundRunning(callback: AsyncCallback<void>): void 349 350向系统申请取消长时任务。使用callback异步回调。 351 352**系统能力**:SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask 353 354> **说明:** 355> 356> 从API version 9开始不再维护,建议使用[backgroundTaskManager.stopBackgroundRunning](../apis-backgroundtasks-kit/js-apis-resourceschedule-backgroundTaskManager.md#backgroundtaskmanagerstopbackgroundrunning)替代。 357 358**参数:** 359 360| 参数名 | 类型 | 必填 | 说明 | 361| -------- | -------- | -------- | -------- | 362| callback | AsyncCallback<void> | 是 | 回调函数。当向系统申请取消长时任务成功,err为undefined,否则为错误对象。 | 363 364**示例**: 365 366<!--code_no_check_fa--> 367```ts 368import { particleAbility } from '@kit.AbilityKit'; 369import { BusinessError } from '@kit.BasicServicesKit'; 370 371function callback(error: BusinessError, data: void) { 372 if (error && error.code !== 0) { 373 console.error(`Operation failed error: ${JSON.stringify(error)}`); 374 } else { 375 console.info(`Operation succeeded, data: ${data}`); 376 } 377} 378 379particleAbility.cancelBackgroundRunning(callback); 380``` 381 382## particleAbility.cancelBackgroundRunning<sup>(deprecated)</sup> 383 384cancelBackgroundRunning(): Promise<void> 385 386向系统申请取消长时任务。使用Promise异步回调。 387 388**系统能力**:SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask 389 390> **说明:** 391> 392> 从API version 9开始不再维护,建议使用[backgroundTaskManager.stopBackgroundRunning](../apis-backgroundtasks-kit/js-apis-resourceschedule-backgroundTaskManager.md#backgroundtaskmanagerstopbackgroundrunning-1)替代。 393 394**返回值:** 395 396| 类型 | 说明 | 397| -------------- | ------------------------- | 398| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 399 400 **示例**: 401 402<!--code_no_check_fa--> 403```ts 404import { particleAbility } from '@kit.AbilityKit'; 405import { BusinessError } from '@kit.BasicServicesKit'; 406 407particleAbility.cancelBackgroundRunning().then(() => { 408 console.info('Operation succeeded'); 409}).catch((err: BusinessError) => { 410 console.error(`Operation failed cause: ${JSON.stringify(err)}`); 411}); 412``` 413 414## particleAbility.connectAbility 415 416connectAbility(request: Want, options:ConnectOptions): number 417 418将当前ability与指定的ServiceAbility进行连接。 419 420> **说明:** 421> 422> 组件启动规则详见:[组件启动规则(FA模型)](../../application-models/component-startup-rules-fa.md)。 423> 跨应用连接serviceAbility,对端应用需配置关联启动。 424 425 426**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel 427 428**参数:** 429 430| 参数名 | 类型 | 必填 | 说明 | 431| ------- | -------------- | ---- | ---------------------------- | 432| request | [Want](js-apis-application-want.md) | 是 | 表示被连接的ServiceAbility。 | 433| options | [ConnectOptions](js-apis-inner-ability-connectOptions.md) | 是 | 连接回调方法。 | 434 435**返回值:** 436 437| 类型 | 说明 | 438| ------ | -------------------- | 439| number | 连接的ServiceAbility的ID(ID从0开始自增,每连接成功一次ID加1)。 | 440 441**示例**: 442 443<!--code_no_check_fa--> 444```ts 445import { particleAbility } from '@kit.AbilityKit'; 446import { rpc } from '@kit.IPCKit'; 447import { BusinessError } from '@kit.BasicServicesKit'; 448 449let connId = particleAbility.connectAbility( 450 { 451 bundleName: 'com.ix.ServiceAbility', 452 abilityName: 'ServiceAbilityA', 453 }, 454 { 455 onConnect: (element, remote) => { 456 console.log(`ConnectAbility onConnect remote is proxy: ${(remote instanceof rpc.RemoteProxy)}`); 457 }, 458 onDisconnect: (element) => { 459 console.log(`ConnectAbility onDisconnect element.deviceId: ${element.deviceId}`); 460 }, 461 onFailed: (code) => { 462 console.error(`particleAbilityTest ConnectAbility onFailed errCode: ${code}`); 463 }, 464 }, 465); 466 467particleAbility.disconnectAbility(connId).then((data) => { 468 console.log(`data: ${data}`); 469}).catch((error: BusinessError) => { 470 console.error(`particleAbilityTest result errCode: ${error.code}`); 471}); 472``` 473 474## particleAbility.disconnectAbility 475 476disconnectAbility(connection: number, callback:AsyncCallback\<void>): void 477 478断开当前ability与指定ServiceAbility的连接。使用callback异步回调。 479 480**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel 481 482**参数:** 483 484 | 参数名 | 类型 | 必填 | 说明 | 485 | -------- | -------- | -------- | -------- | 486 | connection | number | 是 | 表示断开连接的ServiceAbility的ID。 | 487 | callback | AsyncCallback<void> | 是 | 回调函数。当断开当前ability与指定ServiceAbility的连接成功,err为undefined,否则为错误对象。 | 488 489**示例**: 490 491<!--code_no_check_fa--> 492```ts 493import { particleAbility } from '@kit.AbilityKit'; 494import { rpc } from '@kit.IPCKit'; 495 496let connId = particleAbility.connectAbility( 497 { 498 bundleName: 'com.ix.ServiceAbility', 499 abilityName: 'ServiceAbilityA', 500 }, 501 { 502 onConnect: (element, remote) => { 503 console.log(`ConnectAbility onConnect remote is proxy: ${(remote instanceof rpc.RemoteProxy)}`); 504 }, 505 onDisconnect: (element) => { 506 console.log(`ConnectAbility onDisconnect element.deviceId: ${element.deviceId}`); 507 }, 508 onFailed: (code) => { 509 console.error(`particleAbilityTest ConnectAbility onFailed errCode: ${code}`); 510 }, 511 }, 512); 513 514particleAbility.disconnectAbility(connId, (err) => { 515 console.error(`particleAbilityTest disconnectAbility err: ${JSON.stringify(err)}`); 516}); 517``` 518 519 520## particleAbility.disconnectAbility 521 522disconnectAbility(connection: number): Promise\<void> 523 524断开当前ability与指定ServiceAbility的连接。使用Promise异步回调。 525 526**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel 527 528**参数:** 529 530| 参数名 | 类型 | 必填 | 说明 | 531| -------- | -------- | -------- | -------- | 532| connection | number | 是 | 表示断开连接的ServiceAbility的ID。 | 533 534**返回值:** 535 536| 类型 | 说明 | 537| -------------- | ------------------------- | 538| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 539 540**示例**: 541 542<!--code_no_check_fa--> 543```ts 544import { particleAbility } from '@kit.AbilityKit'; 545import { rpc } from '@kit.IPCKit'; 546import { BusinessError } from '@kit.BasicServicesKit'; 547 548let connId = particleAbility.connectAbility( 549 { 550 bundleName: 'com.ix.ServiceAbility', 551 abilityName: 'ServiceAbilityA', 552 }, 553 { 554 onConnect: (element, remote) => { 555 console.log(`ConnectAbility onConnect remote is proxy: ${(remote instanceof rpc.RemoteProxy)}`); 556 }, 557 onDisconnect: (element) => { 558 console.log(`ConnectAbility onDisconnect element.deviceId: ${element.deviceId}`); 559 }, 560 onFailed: (code) => { 561 console.error(`particleAbilityTest ConnectAbility onFailed errCode: ${code}`); 562 }, 563 }, 564); 565 566particleAbility.disconnectAbility(connId).then(() => { 567 console.log('disconnectAbility success'); 568}).catch((error: BusinessError) => { 569 console.error(`particleAbilityTest result errCode : ${error.code}`); 570}); 571``` 572## ErrorCode 573 574定义启动Ability时返回的错误码。 575 576**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel 577 578| 名称 | 值 | 说明 | 579| ------------------------------ | ---- | ---------------------------------------- | 580| INVALID_PARAMETER | -1 | 无效的参数。 | 581