1# @ohos.enterprise.usbManager(USB管理) 2 3本模块提供USB管理能力。 4 5> **说明**: 6> 7> 本模块首批接口从API version 12开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8> 9> 本模块接口仅可在Stage模型下使用。 10> 11> 本模块接口仅对[设备管理应用](../../mdm/mdm-kit-guide.md#功能介绍)开放,需将设备管理应用激活后调用,实现相应功能。 12> 13> 全局通用限制类策略由restrictions统一提供,若要全局禁用USB,请参考[@ohos.enterprise.restrictions(限制类策略)](js-apis-enterprise-restrictions.md)。 14 15## 导入模块 16 17```ts 18import { usbManager } from '@kit.MDMKit'; 19``` 20 21## usbManager.addAllowedUsbDevices 22 23addAllowedUsbDevices(admin: Want, usbDeviceIds: Array\<UsbDeviceId>): void 24 25添加USB设备可用白名单。 26 27以下情况下,调用本接口会报策略冲突: 28 291. 已经通过[setDisallowedPolicy](js-apis-enterprise-restrictions.md#restrictionssetdisallowedpolicy)接口禁用了设备USB能力。 302. 已经通过[setUsbStorageDeviceAccessPolicy](#usbmanagersetusbstoragedeviceaccesspolicy)接口设置了USB存储设备访问策略为禁用。 313. 已经通过[addDisallowedUsbDevices](#usbmanageradddisallowedusbdevices14)接口添加了禁止使用的USB设备类型。 32 33**需要权限:** ohos.permission.ENTERPRISE_MANAGE_USB 34 35**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 36 37 38 39**参数:** 40 41| 参数名 | 类型 | 必填 | 说明 | 42| ------------ | ------------------------------------------------------- | ---- | ------------------------------------------------------------ | 43| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | 44| usbDeviceIds | Array<[UsbDeviceId](#usbdeviceid)> | 是 | USB设备ID数组,UsbDeviceId信息可以通过[getDevices](../apis-basic-services-kit/js-apis-usbManager.md#usbmanagergetdevices)接口获取。添加后的数组长度上限为1000。 | 45 46**错误码**: 47 48以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 49 50| 错误码ID | 错误信息 | 51| -------- | ------------------------------------------------------------ | 52| 9200001 | The application is not an administrator application of the device. | 53| 9200002 | The administrator application does not have permission to manage the device. | 54| 9200010 | A conflict policy has been configured. | 55| 201 | Permission verification failed. The application does not have the permission required to call the API. | 56| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 57 58**示例:** 59 60```ts 61import { Want } from '@kit.AbilityKit'; 62let wantTemp: Want = { 63 bundleName: 'com.example.myapplication', 64 abilityName: 'EntryAbility', 65}; 66try { 67 let usbDeviceIds: Array<usbManager.UsbDeviceId> = [{ 68 vendorId: 1, 69 productId: 1 70 }]; 71 usbManager.addAllowedUsbDevices(wantTemp, usbDeviceIds); 72 console.info(`Succeeded in adding allowed USB devices.`); 73} catch (err) { 74 console.error(`Failed to add allowed USB devices. Code: ${err.code}, message: ${err.message}`); 75} 76``` 77 78## usbManager.removeAllowedUsbDevices 79 80removeAllowedUsbDevices(admin: Want, usbDeviceIds: Array\<UsbDeviceId>): void 81 82移除USB设备可用白名单。 83 84**需要权限:** ohos.permission.ENTERPRISE_MANAGE_USB 85 86**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 87 88 89 90**参数:** 91 92| 参数名 | 类型 | 必填 | 说明 | 93| ------------ | ------------------------------------------------------- | ---- | ------------------------------------------------------------ | 94| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | 95| usbDeviceIds | Array<[UsbDeviceId](#usbdeviceid)> | 是 | USB设备ID数组,UsbDeviceId信息可以通过[getDevices](../apis-basic-services-kit/js-apis-usbManager.md#usbmanagergetdevices)接口获取。 | 96 97**错误码**: 98 99以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 100 101| 错误码ID | 错误信息 | 102| -------- | ------------------------------------------------------------ | 103| 9200001 | The application is not an administrator application of the device. | 104| 9200002 | The administrator application does not have permission to manage the device. | 105| 201 | Permission verification failed. The application does not have the permission required to call the API. | 106| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 107 108**示例:** 109 110```ts 111import { Want } from '@kit.AbilityKit'; 112let wantTemp: Want = { 113 bundleName: 'com.example.myapplication', 114 abilityName: 'EntryAbility', 115}; 116try { 117 let usbDeviceIds: Array<usbManager.UsbDeviceId> = [{ 118 vendorId: 1, 119 productId: 1 120 }]; 121 usbManager.removeAllowedUsbDevices(wantTemp, usbDeviceIds); 122 console.info(`Succeeded in removing allowed USB devices.`); 123} catch (err) { 124 console.error(`Failed to remove allowed USB devices. Code: ${err.code}, message: ${err.message}`); 125} 126``` 127 128## usbManager.getAllowedUsbDevices 129 130getAllowedUsbDevices(admin: Want): Array\<UsbDeviceId> 131 132获取USB设备可用白名单。 133 134**需要权限:** ohos.permission.ENTERPRISE_MANAGE_USB 135 136**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 137 138 139 140**参数:** 141 142| 参数名 | 类型 | 必填 | 说明 | 143| ------ | ------------------------------------------------------- | ---- | -------------------------------------- | 144| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | 145 146**返回值:** 147 148| 类型 | 说明 | 149| ---------------------------------- | ------------------------- | 150| Array<[UsbDeviceId](#usbdeviceid)> | 可用USB白名单设备ID数组。 | 151 152**错误码**: 153 154以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 155 156| 错误码ID | 错误信息 | 157| -------- | ------------------------------------------------------------ | 158| 9200001 | The application is not an administrator application of the device. | 159| 9200002 | The administrator application does not have permission to manage the device. | 160| 201 | Permission verification failed. The application does not have the permission required to call the API. | 161| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 162 163**示例:** 164 165```ts 166import { Want } from '@kit.AbilityKit'; 167let wantTemp: Want = { 168 bundleName: 'com.example.myapplication', 169 abilityName: 'EntryAbility', 170}; 171try { 172 let result: Array<usbManager.UsbDeviceId> = usbManager.getAllowedUsbDevices(wantTemp); 173 console.info(`Succeeded in getting allowed USB devices. Result: ${JSON.stringify(result)}`); 174} catch (err) { 175 console.error(`Failed to get allowed USB devices. Code: ${err.code}, message: ${err.message}`); 176} 177``` 178 179## usbManager.setUsbStorageDeviceAccessPolicy 180 181setUsbStorageDeviceAccessPolicy(admin: Want, usbPolicy: UsbPolicy): void 182 183设置USB存储设备访问策略。 184 185以下情况下,通过本接口设置USB存储设备访问策略为可读可写/只读,会报策略冲突: 186 1871. 已经通过[setDisallowedPolicy](js-apis-enterprise-restrictions.md#restrictionssetdisallowedpolicy)接口禁用了设备USB能力。 1882. 已经通过[addDisallowedUsbDevices](#usbmanageradddisallowedusbdevices14)接口将存储类型的USB设备添加为禁止使用的USB设备类型。 189 190以下情况下,通过本接口设置USB存储设备访问策略为禁用,会报策略冲突: 191 1921. 已经通过[setDisallowedPolicy](js-apis-enterprise-restrictions.md#restrictionssetdisallowedpolicy)接口禁用了设备USB能力。 1932. 已经通过[addAllowedUsbDevices](#usbmanageraddallowedusbdevices)接口添加了USB设备可用白名单。 194 195通过本接口设置,或者通过[addDisallowedUsbDevices](#usbmanageradddisallowedusbdevices14)接口添加存储类型的USB设备,均可禁用USB存储设备。推荐使用后者。 196 197**需要权限:** ohos.permission.ENTERPRISE_MANAGE_USB 198 199**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 200 201 202 203**参数:** 204 205| 参数名 | 类型 | 必填 | 说明 | 206| --------- | ------------------------------------------------------- | ---- | -------------------------------------- | 207| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | 208| usbPolicy | [UsbPolicy](#usbpolicy) | 是 | USB存储设备访问策略。 | 209 210**错误码**: 211 212以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 213 214| 错误码ID | 错误信息 | 215| -------- | ------------------------------------------------------------ | 216| 9200001 | The application is not an administrator application of the device. | 217| 9200002 | The administrator application does not have permission to manage the device. | 218| 9200010 | A conflict policy has been configured. | 219| 201 | Permission verification failed. The application does not have the permission required to call the API. | 220| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 221 222**示例:** 223 224```ts 225import { Want } from '@kit.AbilityKit'; 226let wantTemp: Want = { 227 bundleName: 'com.example.myapplication', 228 abilityName: 'EntryAbility', 229}; 230try { 231 let policy: usbManager.UsbPolicy = usbManager.UsbPolicy.DISABLED; 232 usbManager.setUsbStorageDeviceAccessPolicy(wantTemp, policy); 233 console.info(`Succeeded in setting USB storage device access policy.`); 234} catch (err) { 235 console.error(`Failed to set USB storage device access policy. Code: ${err.code}, message: ${err.message}`); 236} 237``` 238 239## usbManager.getUsbStorageDeviceAccessPolicy 240 241getUsbStorageDeviceAccessPolicy(admin: Want): UsbPolicy 242 243获取USB存储设备访问策略。 244 245**需要权限:** ohos.permission.ENTERPRISE_MANAGE_USB 246 247**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 248 249 250 251**参数:** 252 253| 参数名 | 类型 | 必填 | 说明 | 254| ------ | ------------------------------------------------------- | ---- | -------------------------------------- | 255| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | 256 257**返回值:** 258 259| 类型 | 说明 | 260| ----------------------- | --------------------- | 261| [UsbPolicy](#usbpolicy) | USB存储设备访问策略。 | 262 263**错误码**: 264 265以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 266 267| 错误码ID | 错误信息 | 268| -------- | ------------------------------------------------------------ | 269| 9200001 | The application is not an administrator application of the device. | 270| 9200002 | The administrator application does not have permission to manage the device. | 271| 201 | Permission verification failed. The application does not have the permission required to call the API. | 272| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 273 274**示例:** 275 276```ts 277import { Want } from '@kit.AbilityKit'; 278let wantTemp: Want = { 279 bundleName: 'com.example.myapplication', 280 abilityName: 'EntryAbility', 281}; 282try { 283 let result: usbManager.UsbPolicy = usbManager.getUsbStorageDeviceAccessPolicy(wantTemp); 284 console.info(`Succeeded in getting USB storage device access policy. Result: ${JSON.stringify(result)}`); 285} catch (err) { 286 console.error(`Failed to get USB storage device access policy. Code: ${err.code}, message: ${err.message}`); 287} 288``` 289 290## usbManager.addDisallowedUsbDevices<sup>14+</sup> 291 292addDisallowedUsbDevices(admin: Want, usbDevices: Array\<UsbDeviceType>): void 293 294添加禁止使用的USB设备类型。 295 296以下情况下,调用本接口会报策略冲突: 297 2981. 已经通过[setDisallowedPolicy](js-apis-enterprise-restrictions.md#restrictionssetdisallowedpolicy)接口禁用了设备USB能力。 2992. 已经通过[addAllowedUsbDevices](#usbmanageraddallowedusbdevices)接口添加了USB设备可用白名单。 300 301**需要权限:** ohos.permission.ENTERPRISE_MANAGE_USB 302 303**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 304 305 306 307**参数:** 308 309| 参数名 | 类型 | 必填 | 说明 | 310| ---------- | ------------------------------------------------------- | ---- | ------------------------------------------------------------ | 311| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | 312| usbDevices | Array<[UsbDeviceType](#usbdevicetype14)> | 是 | 要添加的USB设备类型的数组,UsbDeviceType信息可以通过[getDevices](../apis-basic-services-kit/js-apis-usbManager.md#usbmanagergetdevices)接口获取。添加后的数组长度上限为200。 | 313 314**错误码**: 315 316以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 317 318| 错误码ID | 错误信息 | 319| -------- | ------------------------------------------------------------ | 320| 9200001 | The application is not an administrator application of the device. | 321| 9200002 | The administrator application does not have permission to manage the device. | 322| 9200010 | A conflict policy has been configured. | 323| 201 | Permission verification failed. The application does not have the permission required to call the API. | 324| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 325 326**示例:** 327 328```ts 329import { Want } from '@kit.AbilityKit'; 330let wantTemp: Want = { 331 bundleName: 'com.example.myapplication', 332 abilityName: 'EntryAbility', 333}; 334try { 335 let usbDevices: Array<usbManager.UsbDeviceType> = [{ 336 baseClass: 8, 337 subClass: 0, 338 protocol: 0, 339 descriptor: usbManager.Descriptor.INTERFACE 340 }]; 341 usbManager.addDisallowedUsbDevices(wantTemp, usbDevices); 342 console.info(`Succeeded in adding disallowed USB devices.`); 343} catch (err) { 344 console.error(`Failed to add disallowed USB devices. Code: ${err.code}, message: ${err.message}`); 345} 346``` 347 348## usbManager.removeDisallowedUsbDevices<sup>14+</sup> 349 350removeDisallowedUsbDevices(admin: Want, usbDevices: Array\<UsbDeviceType>): void 351 352移除禁止使用的USB设备类型。 353 354**需要权限:** ohos.permission.ENTERPRISE_MANAGE_USB 355 356**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 357 358 359 360**参数:** 361 362| 参数名 | 类型 | 必填 | 说明 | 363| ---------- | ------------------------------------------------------- | ---- | ------------------------------------------------------------ | 364| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | 365| usbDevices | Array<[UsbDeviceType](#usbdevicetype14)> | 是 | 要移除的USB设备类型的数组,UsbDeviceType信息可以通过[getDevices](../apis-basic-services-kit/js-apis-usbManager.md#usbmanagergetdevices)接口获取。 | 366 367**错误码**: 368 369以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 370 371| 错误码ID | 错误信息 | 372| -------- | ------------------------------------------------------------ | 373| 9200001 | The application is not an administrator application of the device. | 374| 9200002 | The administrator application does not have permission to manage the device. | 375| 201 | Permission verification failed. The application does not have the permission required to call the API. | 376| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 377 378**示例:** 379 380```ts 381import { Want } from '@kit.AbilityKit'; 382let wantTemp: Want = { 383 bundleName: 'com.example.myapplication', 384 abilityName: 'EntryAbility', 385}; 386try { 387 let usbDevices: Array<usbManager.UsbDeviceType> = [{ 388 baseClass: 8, 389 subClass: 0, 390 protocol: 0, 391 descriptor: usbManager.Descriptor.INTERFACE 392 }]; 393 usbManager.removeDisallowedUsbDevices(wantTemp, usbDevices); 394 console.info(`Succeeded in removing disallowed USB devices.`); 395} catch (err) { 396 console.error(`Failed to remove disallowed USB devices. Code: ${err.code}, message: ${err.message}`); 397} 398``` 399 400## usbManager.getDisallowedUsbDevices<sup>14+</sup> 401 402getDisallowedUsbDevices(admin: Want): Array\<UsbDeviceType> 403 404获取禁止使用的USB设备类型。 405 406**需要权限:** ohos.permission.ENTERPRISE_MANAGE_USB 407 408**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 409 410 411 412**参数:** 413 414| 参数名 | 类型 | 必填 | 说明 | 415| ------ | ------------------------------------------------------- | ---- | -------------------------------------- | 416| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | 417 418**返回值:** 419 420| 类型 | 说明 | 421| ---------------------------------------- | ----------------------- | 422| Array<[UsbDeviceType](#usbdevicetype14)> | 禁止使用的USB设备类型。 | 423 424**错误码**: 425 426以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 427 428| 错误码ID | 错误信息 | 429| -------- | ------------------------------------------------------------ | 430| 9200001 | The application is not an administrator application of the device. | 431| 9200002 | The administrator application does not have permission to manage the device. | 432| 201 | Permission verification failed. The application does not have the permission required to call the API. | 433| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 434 435**示例:** 436 437```ts 438import { Want } from '@kit.AbilityKit'; 439let wantTemp: Want = { 440 bundleName: 'com.example.myapplication', 441 abilityName: 'EntryAbility', 442}; 443try { 444 let result: Array<usbManager.UsbDeviceType> = usbManager.getDisallowedUsbDevices(wantTemp); 445 console.info(`Succeeded in getting disallowed USB devices. Result: ${JSON.stringify(result)}`); 446} catch (err) { 447 console.error(`Failed to get disallowed USB devices. Code: ${err.code}, message: ${err.message}`); 448} 449``` 450 451## UsbDeviceId 452 453USB设备ID信息。 454 455**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 456 457| 名称 | 类型 | 必填 | 说明 | 458| --------- | ------ | ---- | -------- | 459| vendorId | number | 是 | 厂商ID。 | 460| productId | number | 是 | 产品ID。 | 461 462## UsbDeviceType<sup>14+</sup> 463 464USB设备类型信息。其中具体编号可查询:[defined-class-codes](https://www.usb.org/defined-class-codes)。 465 466**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 467 468| 名称 | 类型 | 必填 | 说明 | 469| ---------- | --------------------------- | ---- | ------------------------------------------------------------ | 470| baseClass | number | 是 | 类型编号,可通过[getDevices](../apis-basic-services-kit/js-apis-usbManager.md#usbmanagergetdevices)接口获取。若descriptor为DEVICE,则取返回值中的USBDevice.clazz字段,若descriptor为INTERFACE,则取返回值中的USBDevice.configs.interfaces.clazz字段。 | 471| subClass | number | 是 | 子类型编号,可通过[getDevices](../apis-basic-services-kit/js-apis-usbManager.md#usbmanagergetdevices)接口获取。若descriptor为DEVICE,则取返回值中的USBDevice.subClass字段,若descriptor为INTERFACE,则取返回值中的USBDevice.configs.interfaces.subClass字段。 | 472| protocol | number | 是 | 协议编号,可通过[getDevices](../apis-basic-services-kit/js-apis-usbManager.md#usbmanagergetdevices)接口获取。若descriptor为DEVICE,则取返回值中的USBDevice.protocol字段,若descriptor为INTERFACE,则取返回值中的USBDevice.configs.interfaces.protocol字段。 | 473| descriptor | [Descriptor](#descriptor14) | 是 | USB描述符。须按照[defined-class-codes](https://www.usb.org/defined-class-codes),取baseClass对应的Descriptor Usage值作为参数传入,若Descriptor Usage为Both,则设备级禁用时传入DEVICE、接口级禁用时传入INTERFACE。 | 474 475## UsbPolicy 476 477USB读写策略的枚举。 478 479**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 480 481| 名称 | 值 | 说明 | 482| ---------- | ---- | ---------- | 483| READ_WRITE | 0 | 可读可写。 | 484| READ_ONLY | 1 | 只读。 | 485| DISABLED | 2 | 禁用。 | 486 487## Descriptor<sup>14+</sup> 488 489USB描述符的枚举。 490 491**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 492 493| 名称 | 值 | 说明 | 494| --------- | ---- | ------------ | 495| INTERFACE | 0 | 接口描述符。 | 496| DEVICE | 1 | 设备描述符。 | 497