• 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: '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
70启动指定的particleAbility(Promise形式)。
71
72使用规则:
73 - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限
74 - 目标Ability的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限
75 - 组件启动规则详见:[组件启动规则(FA模型)](../../application-models/component-startup-rules-fa.md)
76
77**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
78
79**参数:**
80
81| 参数名      | 类型                                            | 必填 | 说明              |
82| --------- | ----------------------------------------------- | ---- | ----------------- |
83| parameter | [StartAbilityParameter](js-apis-inner-ability-startAbilityParameter.md) | 是   | 表示启动的ability |
84
85**返回值:**
86
87| 类型           | 说明                      |
88| -------------- | ------------------------- |
89| Promise\<void> | Promise形式返回启动Ability的结果。 |
90
91**示例:**
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
120销毁当前particleAbility(callback形式)。
121
122**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
123
124**参数:**
125
126| 参数名     | 类型                 | 必填 | 说明                 |
127| -------- | -------------------- | ---- | -------------------- |
128| callback | AsyncCallback\<void> | 是   | 以callback的形式返回停止当前Ability结果 |
129
130**示例:**
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
146销毁当前particleAbility(Promise形式)。
147
148**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
149
150**返回值:**
151
152| 类型           | 说明                      |
153| -------------- | ------------------------- |
154| Promise\<void> | 使用Promise形式返回停止当前Ability结果。 |
155
156**示例:**
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
172获取dataAbilityHelper对象。
173
174**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
175
176**参数:**
177
178| 参数名 | 类型   | 必填 | 说明                     |
179| :--- | ------ | ---- | ------------------------ |
180| uri  | string | 是   | 表示要打开的文件的路径。 |
181
182**返回值:**
183
184| 类型              | 说明                                         |
185| ----------------- | -------------------------------------------- |
186| [DataAbilityHelper](js-apis-inner-ability-dataAbilityHelper.md) | 用来协助其他Ability访问DataAbility的工具类。 |
187
188**示例:**
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
202向系统申请长时任务,使用callback形式返回结果,建议使用新接口[backgroundTaskManager.startBackgroundRunning](js-apis-backgroundTaskManager.md#backgroundtaskmanagerstartbackgroundrunning8)。
203
204**需要权限:** ohos.permission.KEEP_BACKGROUND_RUNNING
205
206**系统能力**:SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask
207
208**参数:**
209
210  | 参数名 | 类型 | 必填 | 说明 |
211  | -------- | -------- | -------- | -------- |
212  | id | number | 是 | 长时任务通知id号 |
213  | request | [NotificationRequest](js-apis-notification.md#notificationrequest) | 是 | 通知参数,用于显示通知栏的信息 |
214  | callback | AsyncCallback&lt;void&gt; | 是 | callback形式返回启动长时任务的结果 |
215
216 **示例**:
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**需要权限:** ohos.permission.KEEP_BACKGROUND_RUNNING
267
268**系统能力**:SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask
269
270向系统申请长时任务,使用promise形式返回结果,建议使用新接口[backgroundTaskManager.startBackgroundRunning](js-apis-backgroundTaskManager.md#backgroundtaskmanagerstartbackgroundrunning8-1)。
271
272**参数:**
273
274| 参数名 | 类型 | 必填 | 说明 |
275| -------- | -------- | -------- | -------- |
276| id | number | 是 | 长时任务通知id号 |
277| request | [NotificationRequest](js-apis-notification.md#notificationrequest) | 是 | 通知参数,用于显示通知栏的信息 |
278
279**返回值:**
280
281| 类型           | 说明                      |
282| -------------- | ------------------------- |
283| Promise\<void> | 使用Promise形式返回启动长时任务的结果。 |
284
285**示例**:
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
331向系统申请取消长时任务,使用callback形式返回结果,建议使用新接口[backgroundTaskManager.stopBackgroundRunning](js-apis-backgroundTaskManager.md#backgroundtaskmanagerstopbackgroundrunning8)。
332
333**系统能力**:SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask
334
335 **参数:**
336
337  | 参数名 | 类型 | 必填 | 说明 |
338  | -------- | -------- | -------- | -------- |
339  | callback | AsyncCallback&lt;void&gt; | 是 | callback形式返回取消长时任务的结果 |
340
341 **示例**:
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
362向系统申请取消长时任务,使用promise形式返回结果,建议使用新接口[backgroundTaskManager.stopBackgroundRunning](js-apis-backgroundTaskManager.md#backgroundtaskmanagerstopbackgroundrunning8-1)。
363
364**系统能力**:SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask
365
366**返回值:**
367
368| 类型           | 说明                      |
369| -------------- | ------------------------- |
370| Promise\<void> | 使用Promise形式返回取消长时任务的结果。 |
371
372 **示例**:
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
389将当前ability与指定的ServiceAbility进行连接(callback形式)。
390
391**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
392
393**参数:**
394
395| 参数名    | 类型           | 必填 | 说明                         |
396| ------- | -------------- | ---- | ---------------------------- |
397| request | [Want](js-apis-application-want.md)           | 是   | 表示被连接的ServiceAbility。 |
398| options | [ConnectOptions](js-apis-inner-ability-connectOptions.md) | 是   | 连接回调方法。           |
399
400
401**示例**:
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
442断开当前ability与指定ServiceAbility的连接(callback形式)。
443
444**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
445
446**参数:**
447
448  | 参数名 | 类型 | 必填 | 说明 |
449  | -------- | -------- | -------- | -------- |
450  | callback | AsyncCallback&lt;void&gt; | 是 | callback形式返回断开连接的结果 |
451
452**示例**:
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
493断开当前ability与指定ServiceAbility的连接(Promise形式)。
494
495**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
496
497**返回值:**
498
499| 类型           | 说明                      |
500| -------------- | ------------------------- |
501| Promise\<void> | 使用Promise形式返回结果。 |
502
503**示例**:
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
543表示错误码。
544
545**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
546
547| 名称                          | 值   | 说明                                                         |
548| ----------------------------- | ---- | ------------------------------------------------------------ |
549| INVALID_PARAMETER         | -1    | 无效的参数。 |
550