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 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
## DeviceBasicInfo

分布式设备基本信息。

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

| 名称                     | 类型                        | 必填   | 说明       |
| ---------------------- | ------------------------- | ---- | -------- |
| deviceId               | string                    | 是    | 设备的唯一标识。 实际值是udid-hash与基于sha256的appid混淆。|
| deviceName             | string                    | 是    | 设备名称。    |
| deviceType             | number                    | 是    | 设备类型。目前仅支持以下设备类型:<br />-12: 智能PC。<br />-14: 智能手机。<br />-17: 智能PAD。    |
| networkId              | string                    | 否    | 设备网络标识。  |

## DeviceStateChange

表示设备状态。

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

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


## DeviceManager

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

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

史晓晓 已提交
122
getAvailableDeviceListSync(): Array&lt;DeviceBasicInfo&gt;;
123 124 125

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

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

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

**返回值:**

  | 名称                                        | 说明        |
  | ------------------------------------------- | --------- |
史晓晓 已提交
134
  | Array&lt;[DeviceBasicInfo](#devicebasicinfo)&gt; | 返回可信设备列表。 |
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&lt;Array&lt;DeviceBasicInfo&gt;&gt;): void;
157 158 159

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

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

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

**参数:**

  | 参数名       | 类型                                     | 必填   | 说明                    |
  | -------- | ---------------------------------------- | ---- | --------------------- |
史晓晓 已提交
168
  | callback | AsyncCallback&lt;Array&lt;[DeviceBasicInfo](#devicebasicinfo)&gt;&gt; | 是    | 获取所有可信设备列表的回调,返回设备信息。 |
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&lt;Array&lt;DeviceBasicInfo&gt;&gt;;
197 198 199

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

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

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

**返回值:**

  | 类型                                                       | 说明                               |
  | ---------------------------------------------------------- | ---------------------------------- |
史晓晓 已提交
208
  | Promise&lt;Array&lt;[DeviceBasicInfo](#devicebasicinfo)&gt;&gt; | 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:&nbsp;string]:&nbsp;Object} , filterOptions?: {[key:&nbsp;string]:&nbsp;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
  ```