1# @ohos.distributedMissionManager (分布式任务管理)(系统接口)
2
3分布式任务管理模块提供跨设备任务管理能力,包括注册和取消任务状态监听、开始和停止同步远端设备任务列表、通过任务ID和包名进行迁移任务等。
4
5> **说明:**
6>
7> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8>
9> 本模块为系统接口。
10
11## 导入模块
12
13```js
14import { distributedMissionManager } from '@kit.AbilityKit';
15```
16
17## distributedMissionManager.registerMissionListener
18
19registerMissionListener(parameter: MissionDeviceInfo, options: MissionCallback, callback: AsyncCallback<void>): void;
20
21注册任务状态监听。使用callback异步回调。
22
23**需要权限**:ohos.permission.MANAGE_MISSIONS
24
25**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
26
27**参数:**
28
29| 参数名       | 类型                                      | 必填   | 说明        |
30| --------- | --------------------------------------- | ---- | --------- |
31| parameter | [MissionDeviceInfo](#missiondeviceinfo) | 是    | 注册监听时的设备信息。 |
32| options   | [MissionCallback](#missioncallback)     | 是    | 注册的回调方法。 |
33| callback  | AsyncCallback<void>               | 是    | 回调函数,注册监听成功,err为undefined,否则为错误对象。 |
34
35**错误码:**
36
37以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
38
39| 错误码ID | 错误信息 |
40| ------- | -------------------------------- |
41| 201      | Permission denied.|
42| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
43
44**示例:**
45
46  ```ts
47  import { distributedMissionManager } from '@kit.AbilityKit';
48  import { BusinessError } from '@kit.BasicServicesKit';
49
50  // 实现回调函数
51  function NotifyMissionsChanged(deviceId: string): void {
52    console.log('NotifyMissionsChanged deviceId ' + JSON.stringify(deviceId));
53  }
54  function NotifySnapshot(deviceId: string, missionId: number): void {
55    console.log('NotifySnapshot deviceId ' + JSON.stringify(deviceId));
56    console.log('NotifySnapshot missionId ' + JSON.stringify(missionId));
57  }
58  function NotifyNetDisconnect(deviceId: string, state: number): void {
59    console.log('NotifyNetDisconnect deviceId ' + JSON.stringify(deviceId));
60    console.log('NotifyNetDisconnect state ' + JSON.stringify(state));
61  }
62  try {
63    // 调用registerMissionListener接口
64    distributedMissionManager.registerMissionListener(
65      { deviceId: "" },
66      {
67        notifyMissionsChanged: NotifyMissionsChanged,
68        notifySnapshot: NotifySnapshot,
69        notifyNetDisconnect: NotifyNetDisconnect
70      },
71      (error: BusinessError) => {
72        if (error) {
73          console.error('registerMissionListener failed, cause: ' + JSON.stringify(error));
74          return;
75        }
76        console.info('registerMissionListener finished');
77      });
78  } catch (error) {
79    console.error('registerMissionListener failed, cause: ' + JSON.stringify(error));
80  }
81  ```
82## distributedMissionManager.registerMissionListener
83
84registerMissionListener(parameter: MissionDeviceInfo, options: MissionCallback): Promise<void>
85
86注册任务状态监听。使用promise异步回调。
87
88**需要权限**:ohos.permission.MANAGE_MISSIONS
89
90**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
91
92**参数:**
93
94| 参数名       | 类型                                       | 必填   | 说明       |
95| --------- | ---------------------------------------- | ---- | -------- |
96| parameter | [MissionDeviceInfo](#missiondeviceinfo)  | 是    | 注册监听时的设备信息。   |
97| options   | <a href="#missioncallback">MissionCallback</a> | 是    | 注册的回调方法。|
98
99**返回值:**
100
101| 类型                  | 说明               |
102| ------------------- | ---------------- |
103| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
104
105**错误码:**
106
107以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
108
109| 错误码ID | 错误信息 |
110| ------- | -------------------------------- |
111| 201      | Permission denied.|
112| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
113
114**示例:**
115
116  ```ts
117  import { distributedMissionManager } from '@kit.AbilityKit';
118  import { BusinessError } from '@kit.BasicServicesKit';
119
120  // 实现回调函数
121  function NotifyMissionsChanged(deviceId: string): void {
122    console.log('NotifyMissionsChanged deviceId ' + JSON.stringify(deviceId));
123  }
124  function NotifySnapshot(deviceId: string, missionId: number): void {
125    console.log('NotifySnapshot deviceId ' + JSON.stringify(deviceId));
126    console.log('NotifySnapshot missionId ' + JSON.stringify(missionId));
127  }
128  function NotifyNetDisconnect(deviceId: string, state: number): void {
129    console.log('NotifyNetDisconnect deviceId ' + JSON.stringify(deviceId));
130    console.log('NotifyNetDisconnect state ' + JSON.stringify(state));
131  }
132  try {
133      // 调用registerMissionListener接口
134      distributedMissionManager.registerMissionListener(
135        { deviceId: "" },
136        {
137          notifyMissionsChanged: NotifyMissionsChanged,
138          notifySnapshot: NotifySnapshot,
139          notifyNetDisconnect: NotifyNetDisconnect
140        }).then(() => {
141          console.info('registerMissionListener finished. ');
142      }).catch((error: BusinessError) => {
143          console.error('registerMissionListener failed, cause: ' + JSON.stringify(error));
144      })
145  } catch (error) {
146      console.error('registerMissionListener failed, cause: ' + JSON.stringify(error));
147  }
148  ```
149
150## distributedMissionManager.unRegisterMissionListener
151
152unRegisterMissionListener(parameter: MissionDeviceInfo, callback: AsyncCallback&lt;void&gt;): void;
153
154取消任务状态监听。使用callback异步回调。
155
156**需要权限**:ohos.permission.MANAGE_MISSIONS
157
158**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
159
160**参数:**
161
162| 参数名       | 类型                                      | 必填   | 说明        |
163| --------- | --------------------------------------- | ---- | --------- |
164| parameter | [MissionDeviceInfo](#missiondeviceinfo) | 是    | 注册监听时的设备信息。    |
165| callback  | AsyncCallback&lt;void&gt;               | 是    | 回调函数,取消监听成功,err为undefined,否则为错误对象。|
166
167**错误码:**
168
169以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
170
171| 错误码ID | 错误信息 |
172| ------- | -------------------------------- |
173| 201      | Permission denied.|
174| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
175
176**示例:**
177
178  ```ts
179  import { distributedMissionManager } from '@kit.AbilityKit';
180  import { BusinessError } from '@kit.BasicServicesKit';
181
182  try {
183    distributedMissionManager.unRegisterMissionListener(
184      { deviceId: "" },
185      (error: BusinessError) => {
186        if (error) {
187            console.error('unRegisterMissionListener failed, cause: ' + JSON.stringify(error));
188            return;
189        }
190        console.info('unRegisterMissionListener finished');
191    })
192  } catch (error) {
193      console.error('unRegisterMissionListener failed, cause: ' + JSON.stringify(error));
194  }
195  ```
196
197## distributedMissionManager.unRegisterMissionListener
198
199unRegisterMissionListener(parameter: MissionDeviceInfo): Promise&lt;void&gt;
200
201取消任务状态监听。使用promise异步回调。
202
203**需要权限**:ohos.permission.MANAGE_MISSIONS
204
205**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
206
207**参数:**
208
209| 参数名       | 类型                                      | 必填   | 说明    |
210| --------- | --------------------------------------- | ---- | ----- |
211| parameter | [MissionDeviceInfo](#missiondeviceinfo) | 是    | 注册监听时的设备信息。 |
212
213**返回值:**
214
215| 类型                  | 说明               |
216| ------------------- | ---------------- |
217| Promise&lt;void&gt; |无返回结果的Promise对象。 |
218
219**错误码:**
220
221以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
222
223| 错误码ID | 错误信息 |
224| ------- | -------------------------------- |
225| 201      | Permission denied.|
226| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
227
228**示例:**
229
230  ```ts
231  import { distributedMissionManager } from '@kit.AbilityKit';
232  import { BusinessError } from '@kit.BasicServicesKit';
233
234  try {
235    distributedMissionManager.unRegisterMissionListener({deviceId: ""}).then(() => {
236      console.info('unRegisterMissionListener finished successfully');
237    }).catch((error: BusinessError) => {
238        console.error('unRegisterMissionListener failed, cause: ' + JSON.stringify(error));
239    })
240  } catch (error) {
241      console.error('unRegisterMissionListener failed, cause: ' + JSON.stringify(error));
242  }
243  ```
244
245## distributedMissionManager.startSyncRemoteMissions
246
247startSyncRemoteMissions(parameter: MissionParameter, callback: AsyncCallback&lt;void&gt;): void;
248
249开始同步远端设备的任务列表。使用callback异步回调。
250
251**需要权限**:ohos.permission.MANAGE_MISSIONS
252
253**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
254
255**参数:**
256
257| 参数名       | 类型                                    | 必填   | 说明        |
258| --------- | ------------------------------------- | ---- | --------- |
259| parameter | [MissionParameter](#missionparameter) | 是    | 同步信息。     |
260| callback  | AsyncCallback&lt;void&gt;             | 是    | 回调函数,同步远端任务列表成功时,err为undefined,否则返回错误对象。 |
261
262**错误码:**
263
264以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
265
266| 错误码ID | 错误信息 |
267| ------- | -------------------------------- |
268| 201      | Permission denied.|
269| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
270
271**示例:**
272
273  ```ts
274  import { distributedMissionManager } from '@kit.AbilityKit';
275  import { BusinessError } from '@kit.BasicServicesKit';
276
277  try {
278    distributedMissionManager.startSyncRemoteMissions(
279      {
280        deviceId: "",
281        fixConflict: false,
282        tag: 0
283      },
284      (error: BusinessError) => {
285        if (error) {
286          console.error('startSyncRemoteMissions failed, cause: ' + JSON.stringify(error));
287          return;
288        }
289        console.info('startSyncRemoteMissions finished');}
290    )
291  } catch (error) {
292    console.error('startSyncRemoteMissions failed, cause: ' + JSON.stringify(error));
293  }
294  ```
295
296## distributedMissionManager.startSyncRemoteMissions
297
298startSyncRemoteMissions(parameter: MissionParameter): Promise&lt;void&gt;
299
300开始同步远端设备的任务列表。使用promise异步回调。
301
302**需要权限**:ohos.permission.MANAGE_MISSIONS
303
304**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
305
306**参数:**
307
308| 参数名       | 类型                                    | 必填   | 说明    |
309| --------- | ------------------------------------- | ---- | ----- |
310| parameter | [MissionParameter](#missionparameter) | 是    | 同步信息。 |
311
312**返回值:**
313
314| 类型                  | 说明               |
315| ------------------- | ---------------- |
316| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
317
318**错误码:**
319
320以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
321
322| 错误码ID | 错误信息 |
323| ------- | -------------------------------- |
324| 201      | Permission denied.|
325| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
326
327**示例:**
328
329  ```ts
330  import { distributedMissionManager } from '@kit.AbilityKit';
331  import { BusinessError } from '@kit.BasicServicesKit';
332
333  try {
334    distributedMissionManager.startSyncRemoteMissions(
335      {
336        deviceId: "",
337        fixConflict: false,
338        tag: 0
339      }
340    ).then(() => {
341        console.info('startSyncRemoteMissions finished successfully');
342      }).catch((error: BusinessError) => {
343      console.error('startSyncRemoteMissions failed, cause: ' + JSON.stringify(error));
344    })
345  } catch (error) {
346    console.error('startSyncRemoteMissions failed, cause: ' + JSON.stringify(error));
347  }
348  ```
349
350## distributedMissionManager.stopSyncRemoteMissions
351
352stopSyncRemoteMissions(parameter: MissionDeviceInfo, callback: AsyncCallback&lt;void&gt;): void;
353
354停止同步远端设备的任务列表。使用callback异步回调。
355
356**需要权限**:ohos.permission.MANAGE_MISSIONS
357
358**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
359
360**参数:**
361
362| 参数名       | 类型                                      | 必填   | 说明        |
363| --------- | --------------------------------------- | ---- | --------- |
364| parameter | [MissionDeviceInfo](#missiondeviceinfo) | 是    | 同步信息。     |
365| callback  | AsyncCallback&lt;void&gt;               | 是    | 回调函数,停止同步远端任务列表成功时,err为undefined,否则为错误对象。 |
366
367**错误码:**
368
369以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
370
371| 错误码ID | 错误信息 |
372| ------- | -------------------------------- |
373| 201      | Permission denied.|
374| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
375
376**示例:**
377
378  ```ts
379  import { distributedMissionManager } from '@kit.AbilityKit';
380  import { BusinessError } from '@kit.BasicServicesKit';
381
382  try {
383    distributedMissionManager.stopSyncRemoteMissions(
384      {
385        deviceId: ""
386      },
387      (error: BusinessError) => {
388        if (error) {
389          console.error('stopSyncRemoteMissions failed, cause: ' + JSON.stringify(error));
390          return;
391        }
392        console.info('stopSyncRemoteMissions finished');}
393    )
394  } catch (error) {
395    console.error('stopSyncRemoteMissions failed, cause: ' + JSON.stringify(error));
396  }
397  ```
398
399## distributedMissionManager.stopSyncRemoteMissions
400
401stopSyncRemoteMissions(parameter: MissionDeviceInfo): Promise&lt;void&gt;
402
403停止同步远端设备的任务列表。使用promise异步回调。
404
405**需要权限**:ohos.permission.MANAGE_MISSIONS
406
407**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
408
409**参数:**
410
411| 参数名       | 类型                                      | 必填   | 说明    |
412| --------- | --------------------------------------- | ---- | ----- |
413| parameter | [MissionDeviceInfo](#missiondeviceinfo) | 是    | 同步信息。 |
414
415**返回值:**
416
417| 类型                  | 说明               |
418| ------------------- | ---------------- |
419| Promise&lt;void&gt; | 无返回结果的promise对象。 |
420
421**错误码:**
422
423以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
424
425| 错误码ID | 错误信息 |
426| ------- | -------------------------------- |
427| 201      | Permission denied.|
428| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
429
430**示例:**
431
432  ```ts
433  import { distributedMissionManager } from '@kit.AbilityKit';
434  import { BusinessError } from '@kit.BasicServicesKit';
435
436  try {
437    distributedMissionManager.stopSyncRemoteMissions(
438      {
439        deviceId: ""
440      }).then(() => {
441        console.info('stopSyncRemoteMissions finished successfully');
442      }).catch((error: BusinessError) => {
443      console.error('stopSyncRemoteMissions failed, cause: ' + JSON.stringify(error));
444    })
445  } catch (error) {
446    console.error('stopSyncRemoteMissions failed, cause: ' + JSON.stringify(error));
447  }
448  ```
449
450## distributedMissionManager.continueMission
451
452continueMission(parameter: ContinueDeviceInfo, options: ContinueCallback, callback: AsyncCallback&lt;void&gt;): void;
453
454通过指定任务ID(missionId)的方式进行迁移任务。使用callback异步回调。
455
456**需要权限**:ohos.permission.MANAGE_MISSIONSohos.permission.DISTRIBUTED_DATASYNC
457
458**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
459
460**参数:**
461
462| 参数名       | 类型                                      | 必填   | 说明    |
463| --------- | --------------------------------------- | ---- | ----- |
464| parameter | [ContinueDeviceInfo](js-apis-inner-application-continueDeviceInfo-sys.md) | 是    | 迁移信息。 |
465| options | [ContinueCallback](js-apis-inner-application-continueCallback-sys.md) | 是    | 迁移任务完成回调函数。 |
466| callback | AsyncCallback&lt;void&gt; | 是    | 回调函数,迁移任务完成时,err为undefined,否则返回错误对象。 |
467
468**错误码:**
469
470以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[分布式调度错误码](./errorcode-DistributedSchedule.md)。
471
472| 错误码ID | 错误信息 |
473| ------- | -------------------------------------------- |
474| 201      | Permission denied.|
475| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
476| 16300501 | The system ability work abnormally. |
477| 16300502 | Failed to get the missionInfo of the specified missionId. |
478| 16300503 | The application is not installed on the remote end and installation-free is not supported. |
479| 16300504 | The application is not installed on the remote end but installation-free is supported, try again with freeInstall flag. |
480| 16300505 | The operation device must be the device where the application to be continued is located or the target device to be continued. |
481| 16300506 | The local continuation task is already in progress. |
482
483**示例:**
484
485  ```ts
486  import { distributedMissionManager } from '@kit.AbilityKit';
487  import { BusinessError } from '@kit.BasicServicesKit';
488
489  // 实现回调函数
490  function onContinueDone(resultCode: number): void {
491    console.log('onContinueDone resultCode: ' + JSON.stringify(resultCode));
492  };
493  try {
494    // 调用continueMission接口
495    distributedMissionManager.continueMission(
496      {
497        srcDeviceId: "",
498        dstDeviceId: "",
499        missionId: 1,
500        wantParam: {"key": "value"}
501      },
502      { onContinueDone: onContinueDone },
503      (error: BusinessError) => {
504        if (error) {
505          console.error('continueMission failed, cause: ' + JSON.stringify(error));
506          return;
507        }
508        console.info('continueMission finished');
509    })
510  } catch (error) {
511    console.error('continueMission failed, cause: ' + JSON.stringify(error));
512  }
513  ```
514
515## distributedMissionManager.continueMission
516
517continueMission(parameter: ContinueDeviceInfo, options: ContinueCallback): Promise&lt;void&gt;
518
519通过指定任务ID(missionId)的方式进行迁移任务。使用promise异步回调。
520
521**需要权限**:ohos.permission.MANAGE_MISSIONSohos.permission.DISTRIBUTED_DATASYNC
522
523**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
524
525**参数:**
526
527| 参数名       | 类型                                      | 必填   | 说明    |
528| --------- | --------------------------------------- | ---- | ----- |
529| parameter | [ContinueDeviceInfo](js-apis-inner-application-continueDeviceInfo-sys.md) | 是    | 迁移信息。 |
530| options | [ContinueCallback](js-apis-inner-application-continueCallback-sys.md) | 是    | 迁移任务完成回调函数。 |
531
532**返回值:**
533
534| 类型                  | 说明               |
535| ------------------- | ---------------- |
536| Promise&lt;void&gt; |无返回结果的promise对象。 |
537
538**错误码:**
539
540以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[分布式调度错误码](./errorcode-DistributedSchedule.md)。
541
542| 错误码ID | 错误信息 |
543| ------- | -------------------------------------------- |
544| 201      | Permission denied.|
545| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
546| 16300501 | The system ability work abnormally. |
547| 16300502 | Failed to get the missionInfo of the specified missionId. |
548| 16300503 | The application is not installed on the remote end and installation-free is not supported. |
549| 16300504 | The application is not installed on the remote end but installation-free is supported, try again with freeInstall flag. |
550| 16300505 | The operation device must be the device where the application to be continued is located or the target device to be continued. |
551| 16300506 | The local continuation task is already in progress. |
552
553**示例:**
554
555  ```ts
556  import { distributedMissionManager } from '@kit.AbilityKit';
557  import { BusinessError } from '@kit.BasicServicesKit';
558
559  // 实现回调函数
560  function onContinueDone(resultCode: number): void {
561    console.log('onContinueDone resultCode: ' + JSON.stringify(resultCode));
562  };
563  try {
564    // 调用continueMission接口
565    distributedMissionManager.continueMission(
566      {
567        srcDeviceId: "",
568        dstDeviceId: "",
569        missionId: 1,
570        wantParam: {"key": "value"}
571      },
572      { onContinueDone: onContinueDone }).then(() => {
573        console.info('continueMission finished successfully');
574      }).catch((error: BusinessError) => {
575      console.error('continueMission failed, cause: ' + JSON.stringify(error));
576    })
577  } catch (error) {
578    console.error('continueMission failed, cause: ' + JSON.stringify(error));
579  }
580  ```
581
582## distributedMissionManager.continueMission<sup>10+</sup>
583
584continueMission(parameter: ContinueMissionInfo, callback: AsyncCallback&lt;void&gt;): void;
585
586通过指定包名(bundleName)的方式进行迁移任务。使用callback异步回调。
587
588**需要权限**:ohos.permission.MANAGE_MISSIONSohos.permission.DISTRIBUTED_DATASYNC
589
590**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
591
592**参数:**
593
594| 参数名       | 类型                                      | 必填   | 说明    |
595| --------- | --------------------------------------- | ---- | ----- |
596| parameter | [ContinueMissionInfo](./js-apis-inner-application-continueMissionInfo-sys.md) | 是    | 迁移信息。 |
597| callback | AsyncCallback&lt;void&gt; | 是    | 回调函数,通过指定包名迁移任务完成时,err为undefined,否则为错误对象。 |
598
599**错误码:**
600
601以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[分布式调度错误码](./errorcode-DistributedSchedule.md)。
602
603| 错误码ID | 错误信息 |
604| ------- | -------------------------------------------- |
605| 201      | Permission denied.|
606| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
607| 16300501 | The system ability work abnormally. |
608| 16300503 | The application is not installed on the remote end and installation-free is not supported. |
609| 16300504 | The application is not installed on the remote end but installation-free is supported, try again with freeInstall flag. |
610| 16300505 | The operation device must be the device where the application to be continued is located or the target device to be continued. |
611| 16300506 | The local continuation task is already in progress. |
612| 16300507 | Failed to get the missionInfo of the specified bundle name. |
613
614**示例:**
615
616  ```ts
617  import { distributedMissionManager } from '@kit.AbilityKit';
618  import { BusinessError } from '@kit.BasicServicesKit';
619
620  try {
621    distributedMissionManager.continueMission(
622      {
623        srcDeviceId: "",
624        dstDeviceId: "",
625        bundleName: "ohos.test.continueapp",
626        wantParam: {"key": "value"}
627      },
628      (error: BusinessError) => {
629        if (error) {
630          console.error('continueMission failed, cause: ' + JSON.stringify(error));
631          return;
632        }
633        console.info('continueMission finished');
634    })
635  } catch (error) {
636    console.error('continueMission failed, cause: ' + JSON.stringify(error));
637  }
638  ```
639
640## distributedMissionManager.continueMission<sup>10+</sup>
641
642continueMission(parameter: ContinueMissionInfo): Promise&lt;void&gt;
643
644通过指定包名(bundleName)的方式进行迁移任务。使用Promise异步回调。
645
646**需要权限**:ohos.permission.MANAGE_MISSIONSohos.permission.DISTRIBUTED_DATASYNC
647
648**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
649
650**参数:**
651
652| 参数名       | 类型                                      | 必填   | 说明    |
653| --------- | --------------------------------------- | ---- | ----- |
654| parameter | [ContinueMissionInfo](./js-apis-inner-application-continueMissionInfo-sys.md) | 是    | 迁移信息。 |
655
656**返回值:**
657
658| 类型                  | 说明               |
659| ------------------- | ---------------- |
660| Promise&lt;void&gt; | 无返回结果的promise对象。 |
661
662**错误码:**
663
664以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[分布式调度错误码](./errorcode-DistributedSchedule.md)。
665
666| 错误码ID | 错误信息 |
667| ------- | -------------------------------------------- |
668| 201      | Permission denied.|
669| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
670| 16300501 | The system ability work abnormally. |
671| 16300503 | The application is not installed on the remote end and installation-free is not supported. |
672| 16300504 | The application is not installed on the remote end but installation-free is supported, try again with freeInstall flag. |
673| 16300505 | The operation device must be the device where the application to be continued is located or the target device to be continued. |
674| 16300506 | The local continuation task is already in progress. |
675| 16300507 | Failed to get the missionInfo of the specified bundle name. |
676
677**示例:**
678
679  ```ts
680  import { distributedMissionManager } from '@kit.AbilityKit';
681  import { BusinessError } from '@kit.BasicServicesKit';
682
683  try {
684      distributedMissionManager.continueMission(
685        {
686          srcDeviceId: "",
687          dstDeviceId: "",
688          bundleName: "ohos.test.continueapp",
689          wantParam: {"key": "value"}
690        }
691      ).then(() => {
692          console.info('continueMission finished successfully');
693      }).catch((error: BusinessError) => {
694          console.error('continueMission failed, cause: ' + JSON.stringify(error));
695      })
696  } catch (error) {
697      console.error('continueMission failed, cause: ' + JSON.stringify(error));
698  }
699  ```
700
701## distributedMissionManager.on('continueStateChange')<sup>10+</sup>
702
703on(type: 'continueStateChange',  callback: Callback&lt;ContinueCallbackInfo&gt;): void
704
705注册当前任务流转状态的监听。
706
707**需要权限**:ohos.permission.MANAGE_MISSIONS
708
709**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
710
711**参数:**
712
713| 参数名       | 类型                                       | 必填   | 说明       |
714| --------- | ---------------------------------------- | ---- | -------- |
715| type | string  | 是    | 当前任务流转状态,取值为'continueStateChange'。    |
716| callback | Callback&lt;[ContinueCallbackInfo](#continuecallbackinfo11)&gt; | 是    | 回调函数,返回当前任务的流转状态和流转信息。    |
717
718**错误码:**
719
720以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
721
722| 错误码ID | 错误信息 |
723| ------- | -------------------------------- |
724| 201      | Permission denied.|
725| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
726
727**示例:**
728
729```js
730  import { distributedMissionManager } from '@kit.AbilityKit';
731
732  try {
733    distributedMissionManager.on('continueStateChange', (data) => {
734      console.info("continueStateChange on:" + JSON.stringify(data));
735    });
736  } catch (error) {
737    console.error("continueStateChange err: " + JSON.stringify(error));
738  }
739  ```
740
741## distributedMissionManager.off('continueStateChange')<sup>10+</sup>
742
743off(type: 'continueStateChange',  callback?: Callback&lt;ContinueCallbackInfo&gt;): void
744
745取消当前任务流转的状态监听。
746
747**需要权限**:ohos.permission.MANAGE_MISSIONS
748
749**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
750
751**参数:**
752
753| 参数名       | 类型                                       | 必填   | 说明       |
754| --------- | ---------------------------------------- | ---- | -------- |
755| type | string  | 是    | 当前任务流转状态,取值为'continueStateChange'。    |
756| callback | Callback&lt;[ContinueCallbackInfo](#continuecallbackinfo11)&gt; | 否    | 需要取消的回调函数。<br>参数不填写,取消type对应的所有回调监听。    |
757
758**错误码:**
759
760以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
761
762| 错误码ID | 错误信息 |
763| ------- | -------------------------------- |
764| 201      | Permission denied.|
765| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
766
767**示例:**
768
769```js
770  import { distributedMissionManager } from '@kit.AbilityKit';
771
772  try {
773    distributedMissionManager.off('continueStateChange', (data) => {
774      console.info("continueStateChange off:" + JSON.stringify(data));
775    });
776  } catch (err) {
777    console.error("continueStateChange err: " + JSON.stringify(err));
778  }
779  ```
780
781## MissionCallback
782
783开始同步后,建立的回调函数。
784
785**需要权限**:ohos.permission.MANAGE_MISSIONS
786
787**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
788
789| 名称                    | 类型       | 可读   | 可写   | 说明                 |
790| --------------------- | -------- | ---- | ---- | ------------------ |
791| notifyMissionsChanged | function | 是    | 否    | 通知任务变化,返回设备ID。     |
792| notifySnapshot        | function | 是    | 否    | 通知快照变化,返回设备ID,任务ID。 |
793| notifyNetDisconnect   | function | 是    | 否    | 通知断开连接,返回设备ID,网络状态。 |
794
795## MissionParameter
796
797同步时所需参数的枚举。
798
799**需要权限**:ohos.permission.MANAGE_MISSIONS
800
801**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
802
803| 名称          | 类型    | 可读   | 可写   | 说明          |
804| ----------- | ------- | ---- | ---- | ----------- |
805| deviceId    | string  | 是    | 是    | 表示设备ID。详细介绍请参见[getAvailableDeviceListSync](../apis-distributedservice-kit/js-apis-distributedDeviceManager.md#getavailabledevicelistsync)     |
806| fixConflict | boolean | 是    | 是    | 表示是否存在版本冲突。 |
807| tag         | number  | 是    | 是    | 表示特定的标签。    |
808
809## MissionDeviceInfo
810
811注册监听时所需参数的枚举。
812
813**需要权限**:ohos.permission.MANAGE_MISSIONS
814
815**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
816
817| 名称       | 类型   | 可读   | 可写   | 说明      |
818| -------- | ------ | ---- | ---- | ------- |
819| deviceId | string | 是    | 是    | 表示设备ID。详细介绍请参见[getAvailableDeviceListSync](../apis-distributedservice-kit/js-apis-distributedDeviceManager.md#getavailabledevicelistsync) |
820
821## ContinueState<sup>10+</sup>
822
823当前任务流转状态的枚举。
824
825**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
826
827| 名称           | 值       | 说明                                                         |
828| ------------- | --------- | ------------------------------------------------------------ |
829| ACTIVE        | 0         | 表示当前任务流转处于激活状态。                              |
830| INACTIVE      | 1         | 表示当前任务流转处于未激活状态。                            |
831
832## ContinueCallbackInfo<sup>11+</sup>
833
834当前任务流转状态监听的回调信息,包含流转状态和流转信息。
835
836**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
837
838| 名称       | 类型    | 可读   | 可写   | 说明          |
839| -------- | ------ | ---- | ---- | ----------- |
840| state | [ContinueState](#continuestate10)   | 是    | 否    |   表示当前任务的流转状态。 |
841| info  | [ContinuableInfo](./js-apis-inner-application-continuableInfo-sys.md) | 是    | 否    |   表示当前任务的流转信息。 |