js-apis-distributedDeviceManager.md 35.6 KB
Newer Older
1 2 3 4 5 6 7 8 9 10
# @ohos.distributedDeviceManager (设备管理)

本模块提供分布式设备管理能力。

应用可调用接口实现如下功能:

- 注册和解除注册设备上下线变化监听
- 发现周边不可信设备
- 认证和取消认证设备
- 查询可信设备列表
史晓晓 已提交
11
- 查询本地设备信息,包括设备名称,设备类型和设备标识等。
12 13 14 15 16 17 18 19 20 21 22 23 24 25


> **说明:**
>
> - 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。


## 导入模块

```js
import deviceManager from '@ohos.distributedDeviceManager';
```


史晓晓 已提交
26
## deviceManager.createDeviceManager
27

史晓晓 已提交
28
createDeviceManager(bundleName: string): DeviceManager;
29

30
创建一个设备管理实例。设备管理实例是分布式设备管理方法的调用入口。用于获取可信设备和本地设备的相关信息。
31 32 33 34 35 36 37 38

**系统能力**:以下各项对应的系统能力均为SystemCapability.DistributedHardware.DeviceManager

**参数:**

| 参数名     | 类型                                                 | 必填 | 说明                                                        |
| ---------- | ---------------------------------------------------- | ---- | ----------------------------------------------------------- |
| bundleName | string                                               | 是   | 指示应用程序的Bundle名称。                                  |
史晓晓 已提交
39 40 41 42 43

**返回值:**

  | 名称                                        | 说明        |
  | ------------------------------------------- | --------- |
史晓晓 已提交
44
  | [DeviceManager](#devicemanager) | 返回设备管理器对象实例。 |
45 46 47 48 49

**示例:**

  ```js
  try {
史晓晓 已提交
50
    let dmInstance = deviceManager.createDeviceManager("ohos.samples.jshelloworld");
51 52 53 54 55
  } catch(err) {
    console.error("createDeviceManager errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```

史晓晓 已提交
56
## deviceManager.releaseDeviceManager
57

史晓晓 已提交
58
releaseDeviceManager(deviceManager: DeviceManager): void;
59 60 61

设备管理实例不再使用后,通过该方法释放DeviceManager实例。

史晓晓 已提交
62 63
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC

64 65
**系统能力**:SystemCapability.DistributedHardware.DeviceManager

史晓晓 已提交
66 67 68 69 70 71
**参数:**

| 参数名     | 类型                                                 | 必填 | 说明                                |
| ---------- | ---------------------------------------------------- | ---- | --------------------------------- |
| deviceManager | [DeviceManager](#devicemanager)    | 是   | 设备管理器对象实例。                                  |

72 73 74 75 76 77 78 79 80 81 82 83
**错误码:**

以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md)

| 错误码ID | 错误信息                                                        |
| -------- | --------------------------------------------------------------- |
| 11600101 | Failed to execute the function.                                 |

**示例:**

  ```js
  try {
史晓晓 已提交
84
    deviceManager.releaseDeviceManager(dmInstance);
85 86 87 88 89
  } catch (err) {
    console.error("release device manager errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```

史晓晓 已提交
90 91 92 93 94 95 96 97
## DeviceBasicInfo

分布式设备基本信息。

**系统能力**:以下各项对应的系统能力均为SystemCapability.DistributedHardware.DeviceManager

| 名称                     | 类型                        | 必填   | 说明       |
| ---------------------- | ------------------------- | ---- | -------- |
98
| deviceId               | string                    | 是    | 设备的唯一标识。 实际值为udid-hash与appid基于sha256方式进行加密后的值。|
史晓晓 已提交
99
| deviceName             | string                    | 是    | 设备名称。    |
史晓晓 已提交
100
| deviceType             | string                    | 是    | 设备类型。    |
史晓晓 已提交
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
| networkId              | string                    | 否    | 设备网络标识。  |

## DeviceStateChange

表示设备状态。

**系统能力**:以下各项对应的系统能力均为SystemCapability.DistributedHardware.DeviceManager

| 名称         | 值  | 说明              |
| ----------- | ---- | --------------- |
| UNKNOWN     | 0    | 设备物理上线,此时状态未知,在状态更改为可用之前,分布式业务无法使用。           |
| AVAILABLE   | 1    | 设备可用状态,表示设备间信息已在分布式数据中同步完成, 可以运行分布式业务。 |
| UNAVAILABLE | 2    | 设备物理下线,此时状态未知。           |


## DeviceManager

设备管理实例,用于获取可信设备和本地设备的相关信息。在调用DeviceManager的方法前,需要先通过createDeviceManager构建一个DeviceManager实例dmInstance。

史晓晓 已提交
120
### getAvailableDeviceListSync
121

史晓晓 已提交
122
getAvailableDeviceListSync(): Array<DeviceBasicInfo>;
123 124 125

同步获取所有可信设备列表。

史晓晓 已提交
126 127
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC

128 129 130 131 132 133
**系统能力**:SystemCapability.DistributedHardware.DeviceManager

**返回值:**

  | 名称                                        | 说明        |
  | ------------------------------------------- | --------- |
史晓晓 已提交
134
  | Array<[DeviceBasicInfo](#devicebasicinfo)> | 返回可信设备列表。 |
135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153

**错误码:**

以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md)

| 错误码ID | 错误信息                                                        |
| -------- | --------------------------------------------------------------- |
| 11600101 | Failed to execute the function.                                 |

**示例:**

  ```js
  try {
    var deviceInfoList = dmInstance.getAvailableDeviceListSync();
  } catch (err) {
    console.error("getAvailableDeviceListSync errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```

史晓晓 已提交
154
### getAvailableDeviceList
155

史晓晓 已提交
156
getAvailableDeviceList(callback:AsyncCallback<Array<DeviceBasicInfo>>): void;
157 158 159

获取所有可信设备列表。使用callback异步回调。

史晓晓 已提交
160 161
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC

162 163 164 165 166 167
**系统能力**:SystemCapability.DistributedHardware.DeviceManager

**参数:**

  | 参数名       | 类型                                     | 必填   | 说明                    |
  | -------- | ---------------------------------------- | ---- | --------------------- |
史晓晓 已提交
168
  | callback | AsyncCallback<Array<[DeviceBasicInfo](#devicebasicinfo)>> | 是    | 获取所有可信设备列表的回调,返回设备信息。 |
169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193

**错误码:**

以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md)

| 错误码ID | 错误信息                                                        |
| -------- | --------------------------------------------------------------- |
| 11600101 | Failed to execute the function.                                 |

**示例:**

  ```js
  try {
    dmInstance.getAvailableDeviceList((err, data) => {
      if (err) {
        console.error("getAvailableDeviceList errCode:" + err.code + ",errMessage:" + err.message);
        return;
      }
      console.log('get available device info: ' + JSON.stringify(data));
    });
  } catch (err) {
    console.error("getAvailableDeviceList errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```

史晓晓 已提交
194
### getAvailableDeviceList
195

史晓晓 已提交
196
getAvailableDeviceList(): Promise<Array<DeviceBasicInfo>>;
197 198 199

获取所有可信设备列表。使用Promise异步回调。

史晓晓 已提交
200 201
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC

202 203 204 205 206 207
**系统能力**:SystemCapability.DistributedHardware.DeviceManager

**返回值:**

  | 类型                                                       | 说明                               |
  | ---------------------------------------------------------- | ---------------------------------- |
史晓晓 已提交
208
  | Promise<Array<[DeviceBasicInfo](#devicebasicinfo)>> | Promise实例,用于获取异步返回结果。 |
209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227

**错误码:**

以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md)

| 错误码ID | 错误信息                                                        |
| -------- | --------------------------------------------------------------- |
| 11600101 | Failed to execute the function.                                 |

**示例:**

  ```js
  dmInstance.getAvailableDeviceList().then((data) => {
    console.log('get available device info: ' + JSON.stringify(data));
    }).catch((err) => {
      console.error("getAvailableDeviceList errCode:" + err.code + ",errMessage:" + err.message);
  });
  ```

史晓晓 已提交
228
### getLocalDeviceNetworkId
229

史晓晓 已提交
230
getLocalDeviceNetworkId(): string;
231

史晓晓 已提交
232
获取本地设备网络标识。
233

史晓晓 已提交
234 235
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC

236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
**系统能力**:SystemCapability.DistributedHardware.DeviceManager

**返回值:**

  | 名称                      | 说明              |
  | ------------------------- | ---------------- |
  | string | 返回本地设备网络标识。 |

**错误码:**

以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md)

| 错误码ID | 错误信息                                                        |
| -------- | --------------------------------------------------------------- |
| 11600101 | Failed to execute the function.                                 |

**示例:**

  ```js
  try {
史晓晓 已提交
256
    var deviceNetworkId = dmInstance.getLocalDeviceNetworkId();
257 258
    console.log('local device networkId: ' + JSON.stringify(deviceNetworkId));
  } catch (err) {
史晓晓 已提交
259
    console.error("getLocalDeviceNetworkId errCode:" + err.code + ",errMessage:" + err.message);
260 261 262
  }
  ```

史晓晓 已提交
263
### getLocalDeviceName
264

史晓晓 已提交
265
getLocalDeviceName(): string;
266

史晓晓 已提交
267
获取本地设备名称。
268

史晓晓 已提交
269 270
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC

271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290
**系统能力**:SystemCapability.DistributedHardware.DeviceManager

**返回值:**

  | 名称                      | 说明              |
  | ------------------------- | ---------------- |
  | string                    | 返回本地设备名称。 |

**错误码:**

以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md)

| 错误码ID | 错误信息                                                        |
| -------- | --------------------------------------------------------------- |
| 11600101 | Failed to execute the function.                                 |

**示例:**

  ```js
  try {
史晓晓 已提交
291
    var deviceName = dmInstance.getLocalDeviceName();
292 293
    console.log('local device name: ' + JSON.stringify(deviceName));
  } catch (err) {
史晓晓 已提交
294
    console.error("getLocalDeviceName errCode:" + err.code + ",errMessage:" + err.message);
295 296 297
  }
  ```

史晓晓 已提交
298
### getLocalDeviceType
299

史晓晓 已提交
300
getLocalDeviceType(): number;
301

史晓晓 已提交
302
获取本地设备类型。
303

史晓晓 已提交
304 305
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC

306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325
**系统能力**:SystemCapability.DistributedHardware.DeviceManager

**返回值:**

  | 名称                      | 说明              |
  | ------------------------- | ---------------- |
  | number                    | 返回本地设备类型。 |

**错误码:**

以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md)

| 错误码ID | 错误信息                                                        |
| -------- | --------------------------------------------------------------- |
| 11600101 | Failed to execute the function.                                 |

**示例:**

  ```js
  try {
史晓晓 已提交
326
    var deviceType = dmInstance.getLocalDeviceType();
327 328
    console.log('local device type: ' + JSON.stringify(deviceType));
  } catch (err) {
史晓晓 已提交
329
    console.error("getLocalDeviceType errCode:" + err.code + ",errMessage:" + err.message);
330 331 332
  }
  ```

史晓晓 已提交
333
### getLocalDeviceId
334

史晓晓 已提交
335
getLocalDeviceId(): string;
336

史晓晓 已提交
337
获取本地设备id。
338

史晓晓 已提交
339 340
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC

341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360
**系统能力**:SystemCapability.DistributedHardware.DeviceManager

**返回值:**

  | 名称                      | 说明              |
  | ------------------------- | ---------------- |
  | string                    | 返回本地设备id。 |

**错误码:**

以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md)

| 错误码ID | 错误信息                                                        |
| -------- | --------------------------------------------------------------- |
| 11600101 | Failed to execute the function.                                 |

**示例:**

  ```js
  try {
史晓晓 已提交
361
    var deviceId = dmInstance.getLocalDeviceId();
362 363
    console.log('local device id: ' + JSON.stringify(deviceId));
  } catch (err) {
史晓晓 已提交
364
    console.error("getLocalDeviceId errCode:" + err.code + ",errMessage:" + err.message);
365 366 367
  }
  ```

史晓晓 已提交
368
### getDeviceName
369

史晓晓 已提交
370
getDeviceName(networkId: string): string;
371

史晓晓 已提交
372
通过指定设备的网络标识获取该设备名称。
373

史晓晓 已提交
374 375
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC

376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403
**系统能力**:SystemCapability.DistributedHardware.DeviceManager

**参数:**

  | 参数名       | 类型                                     | 必填   | 说明        |
  | -------- | ---------------------------------------- | ---- | --------- |
  | networkId| string                                   | 是   | 设备的网络标识。 |

**返回值:**

  | 名称                      | 说明              |
  | ------------------------- | ---------------- |
  | string                    | 返回指定设备名称。 |

**错误码:**

以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md)

| 错误码ID | 错误信息                                                        |
| -------- | --------------------------------------------------------------- |
| 11600101 | Failed to execute the function.                                 |

**示例:**

  ```js
  try {
    // 设备网络标识,可以从可信设备列表中获取
    let networkId = "xxxxxxx"
史晓晓 已提交
404
    var deviceName = dmInstance.getDeviceName(networkId);
405 406 407 408 409 410
    console.log('device name: ' + JSON.stringify(deviceName)); 
  } catch (err) {
    console.error("getDeviceName errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```

史晓晓 已提交
411
### getDeviceType
412

史晓晓 已提交
413
getDeviceType(networkId: string): number;
414

史晓晓 已提交
415
通过指定设备的网络标识获取该设备类型。
416

史晓晓 已提交
417 418
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC

419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446
**系统能力**:SystemCapability.DistributedHardware.DeviceManager

**参数:**

  | 参数名       | 类型                                     | 必填   | 说明        |
  | -------- | ---------------------------------------- | ---- | --------- |
  | networkId| string                                   | 是   | 设备的网络标识。 |

**返回值:**

  | 名称                      | 说明              |
  | ------------------------- | ---------------- |
  | number                    | 返回指定设备类型。 |

**错误码:**

以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md)

| 错误码ID | 错误信息                                                        |
| -------- | --------------------------------------------------------------- |
| 11600101 | Failed to execute the function.                                 |

**示例:**

  ```js
  try {
    // 设备网络标识,可以从可信设备列表中获取
    let networkId = "xxxxxxx"
史晓晓 已提交
447
    var deviceType = dmInstance.getDeviceType(networkId);
448 449 450 451 452 453
    console.log('device type: ' + JSON.stringify(deviceType)); 
  } catch (err) {
    console.error("getDeviceType errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```

史晓晓 已提交
454
### startDiscovering
455

史晓晓 已提交
456
startDiscovering(discoverParam: {[key: string]: Object} , filterOptions?: {[key: string]: Object} ): void;
457 458 459

发现周边设备。发现状态持续两分钟,超过两分钟,会停止发现,最大发现数量99个。

史晓晓 已提交
460 461
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC

462 463 464 465 466 467
**系统能力**:SystemCapability.DistributedHardware.DeviceManager

**参数:**

  | 参数名            | 类型                        | 必填   | 说明    |
  | ------------- | ------------------------------- | ---- | -----  |
史晓晓 已提交
468 469
  | discoverParam  | {[key:&nbsp;string]:&nbsp;Object}      | 是   | 发现标识。 标识发现的目标类型。<br>discoverTargetType: 发现目标默认为设备,值为1。|
  | filterOptions | {[key:&nbsp;string]:&nbsp;Object}          | 否   | 发现设备过滤信息。可选,默认为undefined,发现未上线设备。会携带以下key值:<br>availableStatus(0-1): 仅发现设备可信,值为0表示设备不可信。<br />-0: 设备离线,客户端需要通过调用bindTarget绑定设备。<br />-1: 设备已在线,客户可以进行连接。<br>discoverDistance(0-100): 发现距离本地一定距离内的设备,单位为cm。 <br>authenticationStatus(0-1): 根据不同的认证状态发现设备:<br />-0: 设备未认证。<br />-1:设备已认证。<br>authorizationType(0-2):根据不同的授权类型发现设备:<br />-0: 根据临时协商的会话密钥认证的设备。<br />-1: 基于同账号密钥进行身份验证的设备。<br />-2: 基于不同账号凭据密钥认证的设备。|
470 471 472 473 474 475 476 477

**错误码:**

以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md)

| 错误码ID | 错误信息                                                        |
| -------- | --------------------------------------------------------------- |
| 11600101 | Failed to execute the function.                                 |
史晓晓 已提交
478
| 11600104 | Discovery repeats.                                              |
479 480 481 482

**示例:**

  ```js
史晓晓 已提交
483 484 485
  var discoverParam = {
    'discoverTargetType': 1
  };
486
  var filterOptions = {
史晓晓 已提交
487 488 489 490
    'availableStatus': 1,
    'discoverDistance': 50,
    'authenticationStatus': 0,
    'authorizationType': 0
491 492
  };
  try {
史晓晓 已提交
493
    dmInstance.startDiscovering(discoverParam, filterOptions); // 当有设备发现时,通过discoverSuccess回调通知给应用程序
494
  } catch (err) {
史晓晓 已提交
495
    console.error("startDiscovering errCode:" + err.code + ",errMessage:" + err.message);
496 497 498
  }
  ```

史晓晓 已提交
499
### stopDiscovering
500

史晓晓 已提交
501
stopDiscovering(): void;
502 503 504

停止发现周边设备。

史晓晓 已提交
505 506
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC

507 508 509 510 511 512 513 514 515
**系统能力**:SystemCapability.DistributedHardware.DeviceManager

**错误码:**

以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md)

| 错误码ID | 错误信息                                                        |
| -------- | --------------------------------------------------------------- |
| 11600101 | Failed to execute the function.                                 |
史晓晓 已提交
516
| 11600104 | Stop discovery repeats.                                         |
517 518 519 520 521

**示例:**

  ```js
  try {
史晓晓 已提交
522
    dmInstance.stopDiscovering();
523
  } catch (err) {
史晓晓 已提交
524
    console.error("stopDiscovering errCode:" + err.code + ",errMessage:" + err.message);
525 526 527
  }
  ```

史晓晓 已提交
528
### bindTarget
529

史晓晓 已提交
530
bindTarget(deviceId: string, bindParam: {[key:&nbsp;string]:&nbsp;Object} , callback: AsyncCallback&lt;{deviceId: string}>): void;
531 532 533

认证设备。

史晓晓 已提交
534 535
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC

536 537 538 539 540 541 542
**系统能力**:SystemCapability.DistributedHardware.DeviceManager

**参数:**

  | 参数名     | 类型                                                | 必填  | 说明         |
  | ---------- | --------------------------------------------------- | ----- | ------------ |
  | deviceId   | string                                              | 是    | 设备标识。   |
史晓晓 已提交
543
  | bindParam  | {[key:&nbsp;string]:&nbsp;Object}                             | 是    | 认证参数。由开发者自行决定传入的键值对。默认会携带以下key值: <br>bindType 此值是绑定的类型。<br />-1 PIN码。<br />-2 二维码。<br />-3 NFC。 <br />-4 无交互。<br>targetPkgName 绑定目标的包名。<br>appName 尝试绑定目标的应用程序名称。<br>appOperation 应用程序要绑定目标的原因。<br>customDescription 操作的详细说明。   |
544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560
  | callback   | AsyncCallback&lt;{deviceId:&nbsp;string,&nbsp;}&gt; | 是    | 认证结果回调 |

**错误码:**

以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md)

| 错误码ID | 错误信息                                                        |
| -------- | --------------------------------------------------------------- |
| 11600101 | Failed to execute the function.                                 |
| 11600103 | Bind invalid.                                                   |

**示例:**

  ```js
  // 认证的设备信息,可以从发现的结果中获取
  var deviceId ="XXXXXXXX";
  let bindParam = {
史晓晓 已提交
561 562 563
          'bindType': 1,// 认证类型: 1 - 无帐号PIN码认证
          'targetPkgName': 'xxxx',
          'appName': 'xxxx',
史晓晓 已提交
564
          'appOperation': 'xxxx',
史晓晓 已提交
565
          'customDescription': 'xxxx'
566 567
  }
  try {
史晓晓 已提交
568
    dmInstance.bindTarget(deviceId, bindParam, (err, data) => {
569
      if (err) {
史晓晓 已提交
570
          console.error("bindTarget errCode:" + err.code + ",errMessage:" + err.message);
571 572
          return;
      }
史晓晓 已提交
573
      console.info("bindTarget result:" + JSON.stringify(data));
574 575
    });
  } catch (err) {
史晓晓 已提交
576
    console.error("bindTarget errCode:" + err.code + ",errMessage:" + err.message);
577 578 579
  }
  ```

史晓晓 已提交
580
### unbindTarget
581

史晓晓 已提交
582
unbindTarget(deviceId: string): void;
583 584 585

解除认证设备。

史晓晓 已提交
586 587
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC

588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608
**系统能力**:SystemCapability.DistributedHardware.DeviceManager

**参数:**

  | 参数名   | 类型                      | 必填 | 说明       |
  | -------- | ------------------------- | ---- | ---------- |
  | deviceId | string                    | 是   | 设备标识。 |

**错误码:**

以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md)

| 错误码ID | 错误信息                                                        |
| -------- | --------------------------------------------------------------- |
| 11600101 | Failed to execute the function.                                 |

**示例:**

  ```js
  try {
    var deviceId ="XXXXXXXX";
史晓晓 已提交
609
    dmInstance.unbindTarget(deviceId);
610
  } catch (err) {
史晓晓 已提交
611
    console.error("unbindTarget errCode:" + err.code + ",errMessage:" + err.message);
612 613 614
  }
  ```

史晓晓 已提交
615
### replyUiAction
616

史晓晓 已提交
617
replyUiAction(action: number, actionResult: string): void;
618

史晓晓 已提交
619
回复用户ui操作行为。此接口只能被devicemanager的PIN码hap使用。
620

史晓晓 已提交
621 622
**需要权限**:ohos.permission.ACCESS_SERVICE_DM

623 624 625 626 627 628 629 630
**系统能力**:SystemCapability.DistributedHardware.DeviceManager

**系统API**: 此接口为系统接口。

**参数:**

  | 参数名       | 类型            | 必填  | 说明                |
  | ------------- | --------------- | ---- | ------------------- |
史晓晓 已提交
631
  | action        | number          | 是    | 用户操作动作。       |
史晓晓 已提交
632
  | actionResult        | string          | 是    | 表示用户操作结果。 |
633 634 635 636 637 638

**示例:**

  ```js
 try {
    /*
史晓晓 已提交
639 640 641 642 643 644
      action = 0 - 允许授权
      action = 1 - 取消授权
      action = 2 - 授权框用户操作超时
      action = 3 - 取消pin码框展示
      action = 4 - 取消pin码输入框展示
      action = 5 - pin码输入框确定操作
645 646
    */
    let operation = 0;
史晓晓 已提交
647
    dmInstance.replyUiAction(operation, "extra")
648
    } catch (err) {
史晓晓 已提交
649
      console.error("replyUiAction errCode:" + err.code + ",errMessage:" + err.message);
650 651 652
  }
  ```

史晓晓 已提交
653
### on('replyResult')
654

史晓晓 已提交
655
on(type: 'replyResult', callback: Callback&lt;{ param: string}&gt;): void;
656

史晓晓 已提交
657
回复UI操作结果回调。
658

史晓晓 已提交
659 660
**需要权限**:ohos.permission.ACCESS_SERVICE_DM

661 662 663 664 665 666 667 668 669 670 671 672 673 674 675
**系统能力**:SystemCapability.DistributedHardware.DeviceManager

**系统API**: 此接口为系统接口。

**参数:**

  | 参数名      | 类型                             | 必填 | 说明                            |
  | -------- | ------------------------------------ | ---- | ------------------------------ |
  | type     | string                                | 是  | 注册的设备管理器 ui 状态回调,以便在状态改变时通知应用。 |
  | callback | Callback&lt;{&nbsp;param:&nbsp;string}&gt; | 是  | 指示要注册的设备管理器 ui 状态回调,返回ui状态。        |

**示例:**

  ```js
  try {
史晓晓 已提交
676 677
    dmInstance.on('replyResult', (data) => {
    console.log("replyResult executed, dialog closed" + JSON.stringify(data))
678 679
    var tmpStr = JSON.parse(data.param)
    var isShow = tmpStr.verifyFailed
史晓晓 已提交
680
    console.log("replyResult executed, dialog closed" + isShow)
681 682
  });
  } catch (err) {
史晓晓 已提交
683
    console.error("replyResult errCode:" + err.code + ",errMessage:" + err.message);
684 685 686
  }
  ```

史晓晓 已提交
687
### off('replyResult')
688

史晓晓 已提交
689
off(type: 'replyResult', callback?: Callback&lt;{ param: string}&gt;): void;
690

史晓晓 已提交
691
取消回复UI操作结果回调。
692

史晓晓 已提交
693 694
**需要权限**:ohos.permission.ACCESS_SERVICE_DM

695 696 697 698 699 700 701 702 703 704 705 706 707 708 709
**系统能力**:SystemCapability.DistributedHardware.DeviceManager

**系统API**: 此接口为系统接口。

**参数:**

  | 参数名      | 类型                              | 必填 | 说明                            |
  | -------- | ------------------------------------- | ---- | ------------------------------ |
  | type     | string                                | 是   | 取消注册的设备管理器 ui 状态回调。 |
  | callback | Callback&lt;{&nbsp;param:&nbsp;string}&gt; | 否   | 指示要取消注册的设备管理器 ui 状态,返回UI状态。 |

**示例:**

  ```js
  try {
史晓晓 已提交
710
    dmInstance.off('replyResult');
711
  } catch (err) {
史晓晓 已提交
712
    console.error("replyResult errCode:" + err.code + ",errMessage:" + err.message);
713 714 715
  }
  ```

史晓晓 已提交
716
### on('deviceStateChange')
717

史晓晓 已提交
718
on(type: 'deviceStateChange', callback: Callback&lt;{ action: DeviceStateChange, device: DeviceBasicInfo }&gt;): void;
719 720 721

注册设备状态回调。

史晓晓 已提交
722 723
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC

724 725 726 727 728 729 730
**系统能力**:SystemCapability.DistributedHardware.DeviceManager

**参数:**

  | 参数名       | 类型                                     | 必填   | 说明                             |
  | -------- | ---------------------------------------- | ---- | ------------------------------ |
  | type     | string                                   | 是    | 注册设备状态回调,固定为deviceStateChange。 |
史晓晓 已提交
731
  | callback | Callback&lt;{&nbsp;action:&nbsp;[DeviceStateChange](#devicestatechange),&nbsp;device:&nbsp;[DeviceBasicInfo](#devicebasicinfo)&nbsp;}&gt; | 是    | 指示要注册的设备状态回调,返回设备状态和设备信息。      |
732 733 734 735 736

**示例:**

  ```js
  try {
史晓晓 已提交
737 738
    dmInstance.on('deviceStateChange', (data) => {
      console.info("deviceStateChange on:" + JSON.stringify(data));
739 740
    });
  } catch (err) {
史晓晓 已提交
741
    console.error("deviceStateChange errCode:" + err.code + ",errMessage:" + err.message);
742 743 744
  }
  ```

史晓晓 已提交
745
### off('deviceStateChange')
746

史晓晓 已提交
747
off(type: 'deviceStateChange', callback?: Callback&lt;{ action: DeviceStateChange, device: DeviceBasicInfo }&gt;): void;
748 749 750

取消注册设备状态回调。

史晓晓 已提交
751 752
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC

753 754 755 756 757 758 759
**系统能力**:SystemCapability.DistributedHardware.DeviceManager

**参数:**

  | 参数名       | 类型                                     | 必填   | 说明                          |
  | -------- | ---------------------------------------- | ---- | --------------------------- |
  | type     | string                                   | 是    | 根据应用程序的包名取消注册设备状态回调。        |
史晓晓 已提交
760
  | callback | Callback&lt;{&nbsp;action:&nbsp;[deviceStateChange](#devicestatechange),&nbsp;device:&nbsp;[DeviceBasicInfo](#devicebasicinfo)&nbsp;}&gt; | 否    | 指示要取消注册的设备状态回调,返回设备状态和设备信息。 |
761 762 763 764 765 766 767 768 769 770 771 772 773

**示例:**

  ```js
  try {
    dmInstance.off('deviceStatusChange', (data) => {
      console.info('deviceStatusChange' + JSON.stringify(data));
    });
  } catch (err) {
    console.error("deviceStatusChange errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```

史晓晓 已提交
774
### on('discoverSuccess')
775

史晓晓 已提交
776
on(type: 'discoverSuccess', callback: Callback&lt;{ device: DeviceBasicInfo }&gt;): void;
777 778 779

注册发现设备成功回调监听。

史晓晓 已提交
780 781
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC

782 783 784 785 786 787 788
**系统能力**:SystemCapability.DistributedHardware.DeviceManager

**参数:**

  | 参数名       | 类型                                     | 必填   | 说明                         |
  | -------- | ---------------------------------------- | ---- | -------------------------- |
  | type     | string                                   | 是    | 注册设备发现回调,以便在发现周边设备时通知应用程序。 |
史晓晓 已提交
789
  | callback | Callback&lt;{&nbsp;device:&nbsp;[DeviceBasicInfo](#devicebasicinfo)&nbsp;}&gt; | 是    | 注册设备发现的回调方法。               |
790 791 792 793 794 795 796 797 798 799 800 801 802

**示例:**

  ```js
  try {
    dmInstance.on('discoverSuccess', (data) => {
      console.info("discoverSuccess:" + JSON.stringify(data));
    });
  } catch (err) {
    console.error("discoverSuccess errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```

史晓晓 已提交
803
### off('discoverSuccess')
804

史晓晓 已提交
805
off(type: 'discoverSuccess', callback?: Callback&lt;{ device: DeviceBasicInfo }&gt;): void;
806

史晓晓 已提交
807
取消注册设备发现成功回调。
808

史晓晓 已提交
809 810
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC

811 812 813 814 815 816 817
**系统能力**:SystemCapability.DistributedHardware.DeviceManager

**参数:**

  | 参数名       | 类型                                     | 必填   | 说明                          |
  | -------- | ---------------------------------------- | ---- | --------------------------- |
  | type     | string                                   | 是    | 取消注册设备发现回调。                 |
史晓晓 已提交
818
  | callback | Callback&lt;{&nbsp;device:&nbsp;[DeviceBasicInfo](#devicebasicinfo)&nbsp;}&gt; | 否    | 指示要取消注册的设备发现回调,返回设备状态和设备信息。 |
819 820 821 822 823 824 825 826 827 828 829 830 831

**示例:**

  ```js
  try {
    dmInstance.off('discoverSuccess', (data) => {
      console.info('discoverSuccess' + JSON.stringify(data));
    });
  } catch (err) {
    console.error("discoverSuccess errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```

832 833
### on('deviceNameChange')

史晓晓 已提交
834
on(type: 'deviceNameChange', callback: Callback&lt;{ deviceName: string }&gt;): void;
835

史晓晓 已提交
836
注册设备名称变更回调监听。
837

史晓晓 已提交
838 839
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC

840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862
**系统能力**:SystemCapability.DistributedHardware.DeviceManager

**参数:**

  | 参数名       | 类型                                     | 必填   | 说明                             |
  | -------- | ---------------------------------------- | ---- | ------------------------------ |
  | type     | string                                   | 是    | 注册设备名称改变回调,以便在设备名称改变时通知应用程序。 |
  | callback | Callback&lt;{&nbsp;deviceName:&nbsp;string}&gt; | 是    | 注册设备名称改变的回调方法。                 |

**示例:**

  ```js
  try {
    dmInstance.on('deviceNameChange', (data) => {
        console.info("deviceNameChange on:" + JSON.stringify(data));
    });
  } catch (err) {
    console.error("deviceNameChange errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```

### off('deviceNameChange')

史晓晓 已提交
863
off(type: 'deviceNameChange', callback?: Callback&lt;{ deviceName: string }&gt;): void;
864

史晓晓 已提交
865
取消注册设备名称变更回调监听。
866

史晓晓 已提交
867 868
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC

869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889
**系统能力**:SystemCapability.DistributedHardware.DeviceManager

**参数:**

  | 参数名       | 类型                                     | 必填   | 说明                             |
  | -------- | ---------------------------------------- | ---- | ------------------------------ |
  | type     | string                                   | 是    | 取消注册设备名称改变回调。 |
  | callback | Callback&lt;{&nbsp;deviceName:&nbsp;string}&gt; | 否    | 指示要取消注册设备名称改变的回调方法。                 |

**示例:**

  ```js
  try {
    dmInstance.off('deviceNameChange', (data) => {
      console.info('deviceNameChange' + JSON.stringify(data));
    });
  } catch (err) {
    console.error("deviceNameChange errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```

史晓晓 已提交
890
### on('discoverFailure')
891

史晓晓 已提交
892
on(type: 'discoverFailure', callback: Callback&lt;{ reason: number }&gt;): void;
893 894 895

注册设备发现失败回调监听。

史晓晓 已提交
896 897
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC

898 899 900 901 902 903 904
**系统能力**:SystemCapability.DistributedHardware.DeviceManager

**参数:**

  | 参数名       | 类型                                     | 必填   | 说明                             |
  | -------- | ---------------------------------------- | ---- | ------------------------------ |
  | type     | string                                   | 是    | 注册设备发现失败回调,以便在发现周边设备失败时通知应用程序。 |
史晓晓 已提交
905
  | callback | Callback&lt;{&nbsp;reason:&nbsp;number&nbsp;}&gt; | 是    | 注册设备发现失败的回调方法。                 |
906 907 908 909 910

**示例:**

  ```js
  try {
史晓晓 已提交
911 912
    dmInstance.on('discoverFailure', (data) => {
        console.info("discoverFailure on:" + JSON.stringify(data));
913 914
    });
  } catch (err) {
史晓晓 已提交
915
    console.error("discoverFailure errCode:" + err.code + ",errMessage:" + err.message);
916 917 918
  }
  ```

史晓晓 已提交
919
### off('discoverFailure')
920

史晓晓 已提交
921
off(type: 'discoverFailure', callback?: Callback&lt;{ reason: number }&gt;): void;
922 923 924

取消注册设备发现失败回调。

史晓晓 已提交
925 926
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC

927 928 929 930 931 932 933
**系统能力**:SystemCapability.DistributedHardware.DeviceManager

**参数:**

  | 参数名       | 类型                                     | 必填   | 说明                |
  | -------- | ---------------------------------------- | ---- | ----------------- |
  | type     | string                                   | 是    | 取消注册设备发现失败回调。     |
史晓晓 已提交
934
  | callback | Callback&lt;{&nbsp;reason:&nbsp;number&nbsp;}&gt; | 否    | 指示要取消注册的设备发现失败回调。 |
935 936 937 938 939

**示例:**

  ```js
  try {
史晓晓 已提交
940 941
    dmInstance.off('discoverFailure', (data) => {
      console.info('discoverFailure' + JSON.stringify(data));
942 943
    });
  } catch (err) {
史晓晓 已提交
944
    console.error("discoverFailure errCode:" + err.code + ",errMessage:" + err.message);
945 946 947
  }
  ```

史晓晓 已提交
948
### on('serviceDie')
949

史晓晓 已提交
950
on(type: 'serviceDie', callback?: Callback&lt;{}&gt;): void;
951 952 953

注册设备管理服务死亡监听。

史晓晓 已提交
954 955
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC

956 957 958 959 960 961 962
**系统能力**:SystemCapability.DistributedHardware.DeviceManager

**参数:**

  | 参数名       | 类型                    | 必填   | 说明                                       |
  | -------- | ----------------------- | ---- | ---------------------------------------- |
  | type     | string                  | 是    | 注册serviceDie回调,以便在devicemanager服务异常终止时通知应用程序。 |
史晓晓 已提交
963
  | callback | Callback&lt;{}&gt; | 否    | 注册serviceDie的回调方法。                       |
964 965 966 967 968 969 970 971 972 973 974 975 976

**示例:**

  ```js
  try {
    dmInstance.on("serviceDie", () => {
      console.info("serviceDie on");
    });
  } catch (err) {
    console.error("serviceDie errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```

史晓晓 已提交
977
### off('serviceDie')
978

史晓晓 已提交
979
off(type: 'serviceDie', callback?: Callback&lt;{}&gt;): void;
980 981 982

取消注册设备管理服务死亡监听。

史晓晓 已提交
983 984
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC

985 986 987 988 989 990 991
**系统能力**:SystemCapability.DistributedHardware.DeviceManager

**参数:**

  | 参数名       | 类型                    | 必填   | 说明                                       |
  | -------- | ----------------------- | ---- | ---------------------------------------- |
  | type     | string                  | 是    | 取消注册serviceDie回调,以便在devicemanager服务异常终止时通知应用程序。 |
史晓晓 已提交
992
  | callback | Callback&lt;{}&gt; | 否    | 取消注册serviceDie的回调方法。                     |
993 994 995 996 997 998 999 1000 1001 1002 1003

**示例:**

  ```js
  try {
    dmInstance.off("serviceDie", () => {
      console.info("serviceDie off");
    });
  } catch (err) {
    console.error("serviceDie errCode:" + err.code + ",errMessage:" + err.message);
  }
史晓晓 已提交
1004 1005
  ```