1# @ohos.ability.particleAbility (ParticleAbility) 2 3The **particleAbility** module provides APIs for operating a ServiceAbility. You can use the APIs to start and terminate a ParticleAbility, obtain a **dataAbilityHelper** object, and connect to or disconnect from a ServiceAbility. 4 5> **NOTE** 6> 7> The initial APIs of this module are supported since API version 7. Newly added APIs will be marked with a superscript to indicate their earliest API version. 8> The APIs of this module can be used only in the FA model. 9 10## Constraints 11 12The ParticleAbility module is used to perform operations on abilities of the Data and Service types. 13 14## Modules to Import 15 16```ts 17import particleAbility from '@ohos.ability.particleAbility'; 18``` 19 20## particleAbility.startAbility 21 22startAbility(parameter: StartAbilityParameter, callback: AsyncCallback\<void>): void 23 24Starts a ParticleAbility. This API uses an asynchronous callback to return the result. 25 26Observe the following when using this API: 27 - If an application running in the background needs to call this API to start an ability, it must have the **ohos.permission.START_ABILITIES_FROM_BACKGROUND** permission. 28 - If **visible** of the target ability is **false**, the caller must have the **ohos.permission.START_INVISIBLE_ABILITY** permission. 29 - For details about the startup rules for the components in the FA model, see [Component Startup Rules (FA Model)](../../application-models/component-startup-rules-fa.md). 30 31**System capability**: SystemCapability.Ability.AbilityRuntime.FAModel 32 33**Parameters** 34 35| Name | Type | Mandatory| Description | 36| --------- | ----------------------------------------------- | ---- | ----------------- | 37| parameter | [StartAbilityParameter](js-apis-inner-ability-startAbilityParameter.md) | Yes | Ability to start.| 38| callback | AsyncCallback\<void> | Yes | Callback used to return the result. | 39 40**Example** 41 42```ts 43import particleAbility from '@ohos.ability.particleAbility'; 44import wantConstant from '@ohos.ability.wantConstant'; 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.MainAbility', 57 uri: '' 58 }, 59 }, 60 (error, result) => { 61 console.log('particleAbility startAbility errCode:' + error + 'result:' + result); 62 }, 63); 64``` 65 66## particleAbility.startAbility 67 68startAbility(parameter: StartAbilityParameter): Promise\<void>; 69 70Starts a ParticleAbility. This API uses a promise to return the result. 71 72Observe the following when using this API: 73 - If an application running in the background needs to call this API to start an ability, it must have the **ohos.permission.START_ABILITIES_FROM_BACKGROUND** permission. 74 - If **visible** of the target ability is **false**, the caller must have the **ohos.permission.START_INVISIBLE_ABILITY** permission. 75 - For details about the startup rules for the components in the FA model, see [Component Startup Rules (FA Model)](../../application-models/component-startup-rules-fa.md). 76 77**System capability**: SystemCapability.Ability.AbilityRuntime.FAModel 78 79**Parameters** 80 81| Name | Type | Mandatory| Description | 82| --------- | ----------------------------------------------- | ---- | ----------------- | 83| parameter | [StartAbilityParameter](js-apis-inner-ability-startAbilityParameter.md) | Yes | Ability to start.| 84 85**Return value** 86 87| Type | Description | 88| -------------- | ------------------------- | 89| Promise\<void> | Promise used to return the result.| 90 91**Example** 92 93```ts 94import particleAbility from '@ohos.ability.particleAbility'; 95import wantConstant from '@ohos.ability.wantConstant'; 96 97particleAbility.startAbility( 98 { 99 want: 100 { 101 action: 'ohos.want.action.home', 102 entities: ['entity.system.home'], 103 type: 'MIMETYPE', 104 flags: wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION, 105 deviceId: '', 106 bundleName: 'com.example.Data', 107 abilityName: 'com.example. Data.MainAbility', 108 uri: '' 109 }, 110 }, 111).then((data) => { 112 console.info('particleAbility startAbility'); 113}); 114``` 115 116## particleAbility.terminateSelf 117 118terminateSelf(callback: AsyncCallback\<void>): void 119 120Terminates this ParticleAbility. This API uses an asynchronous callback to return the result. 121 122**System capability**: SystemCapability.Ability.AbilityRuntime.FAModel 123 124**Parameters** 125 126| Name | Type | Mandatory| Description | 127| -------- | -------------------- | ---- | -------------------- | 128| callback | AsyncCallback\<void> | Yes | Callback used to return the result.| 129 130**Example** 131 132```ts 133import particleAbility from '@ohos.ability.particleAbility'; 134 135particleAbility.terminateSelf( 136 (error, result) => { 137 console.log('particleAbility terminateSelf errCode:' + error + 'result:' + result); 138 } 139); 140``` 141 142## particleAbility.terminateSelf 143 144terminateSelf(): Promise\<void> 145 146Terminates this ParticleAbility. This API uses a promise to return the result. 147 148**System capability**: SystemCapability.Ability.AbilityRuntime.FAModel 149 150**Return value** 151 152| Type | Description | 153| -------------- | ------------------------- | 154| Promise\<void> | Promise used to return the result.| 155 156**Example** 157 158```ts 159import particleAbility from '@ohos.ability.particleAbility'; 160 161particleAbility.terminateSelf().then((data) => { 162 console.info('particleAbility terminateSelf'); 163}); 164``` 165 166 167 168## particleAbility.acquireDataAbilityHelper 169 170acquireDataAbilityHelper(uri: string): DataAbilityHelper 171 172Obtains a **dataAbilityHelper** object. 173 174**System capability**: SystemCapability.Ability.AbilityRuntime.FAModel 175 176**Parameters** 177 178| Name| Type | Mandatory| Description | 179| :--- | ------ | ---- | ------------------------ | 180| uri | string | Yes | URI of the file to open.| 181 182**Return value** 183 184| Type | Description | 185| ----------------- | -------------------------------------------- | 186| [DataAbilityHelper](js-apis-inner-ability-dataAbilityHelper.md) | A utility class used to help other abilities access a DataAbility.| 187 188**Example** 189 190```ts 191import particleAbility from '@ohos.ability.particleAbility'; 192 193let uri = ''; 194particleAbility.acquireDataAbilityHelper(uri); 195``` 196 197 198## particleAbility.startBackgroundRunning 199 200startBackgroundRunning(id: number, request: NotificationRequest, callback: AsyncCallback<void>): void; 201 202Requests a continuous task from the system. This API uses an asynchronous callback to return the result. You are advised to use the new API [backgroundTaskManager.startBackgroundRunning](js-apis-backgroundTaskManager.md#backgroundtaskmanagerstartbackgroundrunning8). 203 204**Required permissions**: ohos.permission.KEEP_BACKGROUND_RUNNING 205 206**System capability**: SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask 207 208**Parameters** 209 210 | Name| Type| Mandatory| Description| 211 | -------- | -------- | -------- | -------- | 212 | id | number | Yes| Notification ID of a continuous task.| 213 | request | [NotificationRequest](js-apis-notification.md#notificationrequest) | Yes| Notification parameter, which is used to display information in the notification bar.| 214 | callback | AsyncCallback<void> | Yes| Callback used to return the result.| 215 216 **Example** 217 218```ts 219import notification from '@ohos.notification'; 220import particleAbility from '@ohos.ability.particleAbility'; 221import wantAgent from '@ohos.wantAgent'; 222 223function callback(err, data) { 224 if (err) { 225 console.error('Operation failed cause: ' + JSON.stringify(err)); 226 } else { 227 console.info('Operation succeeded'); 228 } 229} 230 231let wantAgentInfo = { 232 wants: [ 233 { 234 bundleName: 'com.example.myapplication', 235 abilityName: 'com.example.myapplication.MainAbility' 236 } 237 ], 238 operationType: wantAgent.OperationType.START_ABILITY, 239 requestCode: 0, 240 wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] 241}; 242 243wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => { 244 let basicContent = { 245 title: 'title', 246 text: 'text' 247 }; 248 let notificationContent = { 249 contentType: notification.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, 250 normal: basicContent 251 }; 252 let request = { 253 content: notificationContent, 254 wantAgent: wantAgentObj 255 }; 256 let id = 1; 257 particleAbility.startBackgroundRunning(id, request, callback); 258}); 259 260``` 261 262## particleAbility.startBackgroundRunning 263 264startBackgroundRunning(id: number, request: NotificationRequest): Promise<void> 265 266**Required permissions**: ohos.permission.KEEP_BACKGROUND_RUNNING 267 268**System capability**: SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask 269 270Requests a continuous task from the system. This API uses a promise to return the result. You are advised to use the new API [backgroundTaskManager.startBackgroundRunning](js-apis-backgroundTaskManager.md#backgroundtaskmanagerstartbackgroundrunning8-1). 271 272**Parameters** 273 274| Name| Type| Mandatory| Description| 275| -------- | -------- | -------- | -------- | 276| id | number | Yes| Notification ID of a continuous task.| 277| request | [NotificationRequest](js-apis-notification.md#notificationrequest) | Yes| Notification parameter, which is used to display information in the notification bar.| 278 279**Return value** 280 281| Type | Description | 282| -------------- | ------------------------- | 283| Promise\<void> | Promise used to return the result.| 284 285**Example** 286 287```ts 288import notification from '@ohos.notification'; 289import particleAbility from '@ohos.ability.particleAbility'; 290import wantAgent from '@ohos.wantAgent'; 291 292let wantAgentInfo = { 293 wants: [ 294 { 295 bundleName: 'com.example.myapplication', 296 abilityName: 'com.example.myapplication.MainAbility' 297 } 298 ], 299 operationType: wantAgent.OperationType.START_ABILITY, 300 requestCode: 0, 301 wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] 302}; 303 304wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => { 305 let basicContent = { 306 title: 'title', 307 text: 'text' 308 }; 309 let notificationContent = { 310 contentType: notification.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, 311 normal: basicContent 312 }; 313 let request = { 314 content: notificationContent, 315 wantAgent: wantAgentObj 316 }; 317 let id = 1; 318 particleAbility.startBackgroundRunning(id, request).then(() => { 319 console.info('Operation succeeded'); 320 }).catch((err) => { 321 console.error('Operation failed cause: ' + JSON.stringify(err)); 322 }); 323}); 324 325``` 326 327## particleAbility.cancelBackgroundRunning 328 329cancelBackgroundRunning(callback: AsyncCallback<void>): void; 330 331Requests to cancel a continuous task from the system. This API uses an asynchronous callback to return the result. You are advised to use the new API [backgroundTaskManager.stopBackgroundRunning](js-apis-backgroundTaskManager.md#backgroundtaskmanagerstopbackgroundrunning8). 332 333**System capability**: SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask 334 335 **Parameters** 336 337 | Name| Type| Mandatory| Description| 338 | -------- | -------- | -------- | -------- | 339 | callback | AsyncCallback<void> | Yes| Callback used to return the result.| 340 341 **Example** 342 343```ts 344import particleAbility from '@ohos.ability.particleAbility'; 345 346function callback(err, data) { 347 if (err) { 348 console.error('Operation failed cause: ' + JSON.stringify(err)); 349 } else { 350 console.info('Operation succeeded'); 351 } 352} 353 354particleAbility.cancelBackgroundRunning(callback); 355 356``` 357 358## particleAbility.cancelBackgroundRunning 359 360cancelBackgroundRunning(): Promise<void>; 361 362Requests to cancel a continuous task from the system. This API uses a promise to return the result. You are advised to use the new API [backgroundTaskManager.stopBackgroundRunning](js-apis-backgroundTaskManager.md#backgroundtaskmanagerstopbackgroundrunning8-1). 363 364**System capability**: SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask 365 366**Return value** 367 368| Type | Description | 369| -------------- | ------------------------- | 370| Promise\<void> | Promise used to return the result.| 371 372 **Example** 373 374```ts 375import particleAbility from '@ohos.ability.particleAbility'; 376 377particleAbility.cancelBackgroundRunning().then(() => { 378 console.info('Operation succeeded'); 379}).catch((err) => { 380 console.error('Operation failed cause: ' + JSON.stringify(err)); 381}); 382 383``` 384 385## particleAbility.connectAbility 386 387connectAbility(request: Want, options:ConnectOptions): number 388 389Connects this ability to a specific ServiceAbility. 390 391**System capability**: SystemCapability.Ability.AbilityRuntime.FAModel 392 393**Parameters** 394 395| Name | Type | Mandatory| Description | 396| ------- | -------------- | ---- | ---------------------------- | 397| request | [Want](js-apis-application-want.md) | Yes | ServiceAbility to connect.| 398| options | [ConnectOptions](js-apis-inner-ability-connectOptions.md) | Yes | Connection options. | 399 400 401**Example** 402 403```ts 404import particleAbility from '@ohos.ability.particleAbility'; 405import rpc from '@ohos.rpc'; 406 407function onConnectCallback(element, remote) { 408 console.log('ConnectAbility onConnect remote is proxy:' + (remote instanceof rpc.RemoteProxy)); 409} 410 411function onDisconnectCallback(element) { 412 console.log('ConnectAbility onDisconnect element.deviceId : ' + element.deviceId); 413} 414 415function onFailedCallback(code) { 416 console.log('particleAbilityTest ConnectAbility onFailed errCode : ' + code); 417} 418 419let connId = particleAbility.connectAbility( 420 { 421 bundleName: 'com.ix.ServiceAbility', 422 abilityName: 'ServiceAbilityA', 423 }, 424 { 425 onConnect: onConnectCallback, 426 onDisconnect: onDisconnectCallback, 427 onFailed: onFailedCallback, 428 }, 429); 430 431particleAbility.disconnectAbility(connId).then((data) => { 432 console.log(' data: ' + data); 433}).catch((error) => { 434 console.log('particleAbilityTest result errCode : ' + error.code); 435}); 436``` 437 438## particleAbility.disconnectAbility 439 440disconnectAbility(connection: number, callback:AsyncCallback\<void>): void; 441 442Disconnects this ability from a specific ServiceAbility. This API uses an asynchronous callback to return the result. 443 444**System capability**: SystemCapability.Ability.AbilityRuntime.FAModel 445 446**Parameters** 447 448 | Name| Type| Mandatory| Description| 449 | -------- | -------- | -------- | -------- | 450 | callback | AsyncCallback<void> | Yes| Callback used to return the result.| 451 452**Example** 453 454```ts 455import particleAbility from '@ohos.ability.particleAbility'; 456import rpc from '@ohos.rpc'; 457 458function onConnectCallback(element, remote) { 459 console.log('ConnectAbility onConnect remote is proxy:' + (remote instanceof rpc.RemoteProxy)); 460} 461 462function onDisconnectCallback(element) { 463 console.log('ConnectAbility onDisconnect element.deviceId : ' + element.deviceId); 464} 465 466function onFailedCallback(code) { 467 console.log('particleAbilityTest ConnectAbility onFailed errCode : ' + code); 468} 469 470let connId = particleAbility.connectAbility( 471 { 472 bundleName: 'com.ix.ServiceAbility', 473 abilityName: 'ServiceAbilityA', 474 }, 475 { 476 onConnect: onConnectCallback, 477 onDisconnect: onDisconnectCallback, 478 onFailed: onFailedCallback, 479 }, 480); 481 482particleAbility.disconnectAbility(connId, (err) => { 483 console.log('particleAbilityTest disconnectAbility err====>' 484 + ('json err=') + JSON.stringify(err)); 485}); 486``` 487 488 489## particleAbility.disconnectAbility 490 491disconnectAbility(connection: number): Promise\<void>; 492 493Disconnects this ability from a specific ServiceAbility. This API uses a promise to return the result. 494 495**System capability**: SystemCapability.Ability.AbilityRuntime.FAModel 496 497**Return value** 498 499| Type | Description | 500| -------------- | ------------------------- | 501| Promise\<void> | Promise used to return the result.| 502 503**Example** 504 505```ts 506import particleAbility from '@ohos.ability.particleAbility'; 507import rpc from '@ohos.rpc'; 508 509function onConnectCallback(element, remote) { 510 console.log('ConnectAbility onConnect remote is proxy:' + (remote instanceof rpc.RemoteProxy)); 511} 512 513function onDisconnectCallback(element) { 514 console.log('ConnectAbility onDisconnect element.deviceId : ' + element.deviceId); 515} 516 517function onFailedCallback(code) { 518 console.log('particleAbilityTest ConnectAbility onFailed errCode : ' + code); 519} 520 521let connId = particleAbility.connectAbility( 522 { 523 bundleName: 'com.ix.ServiceAbility', 524 abilityName: 'ServiceAbilityA', 525 }, 526 { 527 onConnect: onConnectCallback, 528 onDisconnect: onDisconnectCallback, 529 onFailed: onFailedCallback, 530 }, 531); 532 533particleAbility.disconnectAbility(connId).then((data) => { 534 console.log(' data: ' + data); 535}).catch((error) => { 536 console.log('particleAbilityTest result errCode : ' + error.code); 537}); 538 539``` 540 541## ErrorCode 542 543Enumerates the error codes. 544 545**System capability**: SystemCapability.Ability.AbilityRuntime.FAModel 546 547| Name | Value | Description | 548| ----------------------------- | ---- | ------------------------------------------------------------ | 549| INVALID_PARAMETER | -1 | Invalid parameter.| 550