• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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