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&lt;void&gt;): 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&lt;void&gt; | 是 | 回调函数。当向系统申请长时任务成功,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&lt;void&gt;
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&lt;void&gt;): 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&lt;void&gt; | 是 | 回调函数。当向系统申请取消长时任务成功,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&lt;void&gt;
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&lt;void&gt; | 是 | 回调函数。当断开当前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