• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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&lt;void&gt;): 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&lt;void&gt; | 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&lt;void&gt;
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&lt;void&gt;): 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&lt;void&gt; | 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&lt;void&gt;;
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&lt;void&gt; | 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