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