1# @ohos.enterprise.securityManager(安全管理) 2<!--Kit: MDM Kit--> 3<!--Subsystem: Customization--> 4<!--Owner: @huanleima--> 5<!--Designer: @liuzuming--> 6<!--Tester: @lpw_work--> 7<!--Adviser: @Brilliantry_Rui--> 8 9本模块提供设备安全管理的能力,包括查询安全补丁状态、查询文件加密状态等。 10 11> **说明:** 12> 13> 本模块首批接口从API version 12开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 14> 15> 本模块接口仅可在Stage模型下使用。 16> 17> 本模块接口仅对设备管理应用开放,且调用接口前需激活设备管理应用,具体请参考[MDM Kit开发指南](../../mdm/mdm-kit-guide.md)。 18 19## 导入模块 20 21```ts 22import { securityManager } from '@kit.MDMKit'; 23``` 24 25## securityManager.uninstallUserCertificate 26 27uninstallUserCertificate(admin: Want, certUri: string): Promise<void> 28 29卸载用户证书,使用Promise异步回调。 30 31**需要权限:** ohos.permission.ENTERPRISE_MANAGE_CERTIFICATE 32 33**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 34 35**模型约束:** 此接口仅可在Stage模型下使用。 36 37**参数:** 38 39| 参数名 | 类型 | 必填 | 说明 | 40| ------- | ------------------------------------------------------- | ---- | --------------------------------- | 41| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | 42| certUri | string | 是 | 证书uri,由安装用户证书接口[installUserCertificate](#securitymanagerinstallusercertificate)设置返回。 | 43 44**返回值:** 45 46| 类型 | 说明 | 47| ------------------- | ------------------------------------------------------------ | 48| Promise<void> | 无返回结果的Promise对象。当卸载用户证书失败时会抛出错误对象。 | 49 50**错误码**: 51 52以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 53 54| 错误码ID | 错误信息 | 55| -------- | ------------------------------------------------------------ | 56| 9200001 | The application is not an administrator application of the device. | 57| 9200002 | The administrator application does not have permission to manage the device. | 58| 9201001 | Failed to manage the certificate. | 59| 201 | Permission verification failed. The application does not have the permission required to call the API. | 60| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 61 62**示例:** 63 64```ts 65import { securityManager } from '@kit.MDMKit'; 66import { Want } from '@kit.AbilityKit'; 67import { BusinessError } from '@kit.BasicServicesKit'; 68 69let wantTemp: Want = { 70 // 需根据实际情况进行替换 71 bundleName: 'com.example.myapplication', 72 abilityName: 'EntryAbility' 73}; 74// 需根据实际情况进行替换 75let aliasStr = "certName"; 76securityManager.uninstallUserCertificate(wantTemp, aliasStr).then(() => { 77 console.info(`Succeeded in uninstalling user certificate.`); 78}).catch((err: BusinessError) => { 79 console.error(`Failed to uninstall user certificate. Code is ${err.code}, message is ${err.message}`); 80}); 81``` 82 83## securityManager.installUserCertificate 84 85installUserCertificate(admin: Want, certificate: CertBlob): Promise<string> 86 87安装用户证书,使用Promise异步回调。 88 89**需要权限:** ohos.permission.ENTERPRISE_MANAGE_CERTIFICATE 90 91**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 92 93**模型约束:** 此接口仅可在Stage模型下使用。 94 95**参数:** 96 97| 参数名 | 类型 | 必填 | 说明 | 98| ----------- | ------------------------------------------------------- | ---- | -------------- | 99| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | 100| certificate | [CertBlob](#certblob) | 是 | 证书信息。证书文件应放在应用沙箱路径等应用有权限访问的路径下。 | 101 102**返回值:** 103 104| 类型 | 说明 | 105| --------------------- | ---------------------------------------------------- | 106| Promise<string> | Promise对象,返回当前证书安装后的uri,用于卸载证书。 | 107 108**错误码**: 109 110以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 111 112| 错误码ID | 错误信息 | 113| -------- | ------------------------------------------------------------ | 114| 9200001 | The application is not an administrator application of the device. | 115| 9200002 | The administrator application does not have permission to manage the device. | 116| 9201001 | Failed to manage the certificate. | 117| 201 | Permission verification failed. The application does not have the permission required to call the API. | 118| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 119 120**示例:** 121 122<!--code_no_check--> 123```ts 124import { securityManager } from '@kit.MDMKit'; 125import { common, Want } from '@kit.AbilityKit'; 126import { BusinessError } from '@kit.BasicServicesKit'; 127 128let wantTemp: Want = { 129 // 需根据实际情况进行替换 130 bundleName: 'com.example.myapplication', 131 abilityName: 'EntryAbility' 132}; 133let certFileArray: Uint8Array = new Uint8Array(); 134// 变量context需要在MainAbility的onCreate回调函数中进行初始化 135// test.cer需要放置在rawfile目录下 136// 请在组件内获取context,确保this.getUIContext().getHostContext()返回结果为UIAbilityContext 137const context = this.getUIContext().getHostContext() as common.UIAbilityContext; 138context.resourceManager.getRawFileContent("test.cer").then((value) => { 139 certFileArray = value; 140 securityManager.installUserCertificate(wantTemp, { inData: certFileArray, alias: "cert_alias_xts" }) 141 .then((result) => { 142 console.info(`Succeeded in installing user certificate, result : ${JSON.stringify(result)}`); 143 }).catch((err: BusinessError) => { 144 console.error(`Failed to install user certificate. Code: ${err.code}, message: ${err.message}`); 145 }) 146}).catch((err: BusinessError) => { 147 console.error(`Failed to get raw file content. message: ${err.message}`); 148 return; 149}); 150``` 151 152## securityManager.installUserCertificate<sup>18+</sup> 153 154installUserCertificate(admin: Want, certificate: CertBlob, accountId: number): string 155 156支持按系统账户安装用户证书。 157 158**需要权限:** ohos.permission.ENTERPRISE_MANAGE_CERTIFICATE 159 160**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 161 162**模型约束:** 此接口仅可在Stage模型下使用。 163 164**参数:** 165 166| 参数名 | 类型 | 必填 | 说明 | 167| ----------- | ------------------------------------------------------- | ---- | -------------- | 168| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | 169| certificate | [CertBlob](#certblob) | 是 | 证书信息。证书文件应放在应用沙箱路径等应用有权限访问的路径下。 | 170| accountId | number | 是 | 用户ID,指定具体用户,取值范围:大于等于0。accountId可以通过@ohos.account.osAccount中的[getOsAccountLocalId](../apis-basic-services-kit/js-apis-osAccount.md#getosaccountlocalid9-1)等接口来获取。 | 171 172**返回值:** 173 174| 类型 | 说明 | 175| --------------------- | ---------------------------------------------------- | 176| string | 返回当前证书安装后的uri,用于卸载证书。 | 177 178**错误码**: 179 180以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 181 182| 错误码ID | 错误信息 | 183| -------- | ------------------------------------------------------------ | 184| 9200001 | The application is not an administrator application of the device. | 185| 9200002 | The administrator application does not have permission to manage the device. | 186| 9201001 | Failed to manage the certificate. | 187| 201 | Permission verification failed. The application does not have the permission required to call the API. | 188 189**示例:** 190 191<!--code_no_check--> 192```ts 193import { securityManager } from '@kit.MDMKit'; 194import { common, Want } from '@kit.AbilityKit'; 195 196let wantTemp: Want = { 197 // 需根据实际情况进行替换 198 bundleName: 'com.example.myapplication', 199 abilityName: 'EntryAbility' 200}; 201let certFileArray: Uint8Array = new Uint8Array(); 202let accountId: number = 100; 203// 变量context需要在MainAbility的onCreate回调函数中进行初始化 204// test.cer需要放置在rawfile目录下 205// 请在组件内获取context,确保this.getUIContext().getHostContext()返回结果为UIAbilityContext 206const context = this.getUIContext().getHostContext() as common.UIAbilityContext; 207context.resourceManager.getRawFileContent("test.cer").then((value) => { 208 certFileArray = value; 209 try { 210 let result: string = securityManager.installUserCertificate(wantTemp, { inData: certFileArray, alias: "cert_alias_xts" }, accountId); 211 console.info(`Succeeded in installing user certificate. result: ${result}`); 212 } catch (err) { 213 console.error(`Failed to install user certificate. Code: ${err.code}, message: ${err.message}`); 214 } 215}); 216``` 217## securityManager.getUserCertificates<sup>18+</sup> 218 219getUserCertificates(admin: Want, accountId: number): Array<string> 220 221获取指定系统账户下的用户证书信息。 222 223**需要权限:** ohos.permission.ENTERPRISE_MANAGE_CERTIFICATE 224 225**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 226 227**模型约束:** 此接口仅可在Stage模型下使用。 228 229**参数:** 230 231| 参数名 | 类型 | 必填 | 说明 | 232| ------ | ------------------------------------------------------- | ---- | ------------------------------------------------------------ | 233| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | 234| accountId | number | 是 | 用户ID,指定具体用户,取值范围:大于等于0。accountId可以通过@ohos.account.osAccount中的[getOsAccountLocalId](../apis-basic-services-kit/js-apis-osAccount.md#getosaccountlocalid9-1)等接口来获取。 | 235 236**返回值:** 237 238| 类型 | 说明 | 239| ------ | -------------------- | 240| Array<string> | 返回在指定用户ID下安装的所有用户证书。 | 241 242**错误码**: 243 244以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 245 246| 错误码ID | 错误信息 | 247| -------- | ------------------------------------------------------------ | 248| 9200001 | The application is not an administrator application of the device. | 249| 9200002 | The administrator application does not have permission to manage the device. | 250| 201 | Permission verification failed. The application does not have the permission required to call the API. | 251 252**示例:** 253 254```ts 255import { securityManager } from '@kit.MDMKit'; 256import { Want } from '@kit.AbilityKit'; 257 258let wantTemp: Want = { 259 // 需根据实际情况进行替换 260 bundleName: 'com.example.myapplication', 261 abilityName: 'EntryAbility' 262}; 263// 需根据实际情况进行替换 264let accountId: number = 100; 265try { 266 let result: Array<string> = securityManager.getUserCertificates(wantTemp, accountId); 267 console.info(`Succeeded in getting the uri list of user Certificates. result: ${JSON.stringify(result)}`); 268} catch (err) { 269 console.error(`Failed to get the uri list of user Certificates. Code: ${err.code}, message: ${err.message}`); 270} 271``` 272 273## securityManager.getSecurityStatus 274 275getSecurityStatus(admin: Want, item: string): string 276 277获取当前设备安全策略信息。 278 279**需要权限:** ohos.permission.ENTERPRISE_MANAGE_SECURITY 280 281**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 282 283**模型约束:** 此接口仅可在Stage模型下使用。 284 285**参数:** 286 287| 参数名 | 类型 | 必填 | 说明 | 288| ------ | ------------------------------------------------------- | ---- | ------------------------------------------------------------ | 289| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | 290| item | string | 是 | 安全策略名称。<br/>- patch:设备安全补丁。<br/>- encryption:设备文件系统加密。 <!--RP1--><!--RP1End-->| 291 292**返回值:** 293 294| 类型 | 说明 | 295| ------ | -------------------- | 296| string | 返回安全策略状态值。 | 297 298**错误码**: 299 300以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 301 302| 错误码ID | 错误信息 | 303| -------- | ------------------------------------------------------------ | 304| 9200001 | The application is not an administrator application of the device. | 305| 9200002 | The administrator application does not have permission to manage the device. | 306| 201 | Permission verification failed. The application does not have the permission required to call the API. | 307| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 308 309**示例:** 310 311```ts 312import { securityManager } from '@kit.MDMKit'; 313import { Want } from '@kit.AbilityKit'; 314 315let wantTemp: Want = { 316 // 需根据实际情况进行替换 317 bundleName: 'com.example.myapplication', 318 abilityName: 'EntryAbility' 319}; 320 321try { 322 let result: string = securityManager.getSecurityStatus(wantTemp, 'patch'); 323 console.info(`Succeeded in getting security patch tag. tag: ${result}`); 324} catch (err) { 325 console.error(`Failed to get security patch tag. Code: ${err.code}, message: ${err.message}`); 326} 327``` 328 329## securityManager.setPasswordPolicy 330 331setPasswordPolicy(admin: Want, policy: PasswordPolicy): void 332 333设置设备口令策略。 334 335**需要权限:** ohos.permission.ENTERPRISE_MANAGE_SECURITY 336 337**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 338 339**模型约束:** 此接口仅可在Stage模型下使用。 340 341**参数:** 342 343| 参数名 | 类型 | 必填 | 说明 | 344| -------- | ---------------------------------------- | ---- | ------------------------------- | 345| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | 346| policy | [PasswordPolicy](#passwordpolicy) | 是 | 设备口令策略。 | 347 348**错误码**: 349 350以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 351 352| 错误码ID | 错误信息 | 353| ------- | ---------------------------------------------------------------------------- | 354| 9200001 | The application is not an administrator application of the device. | 355| 9200002 | The administrator application does not have permission to manage the device. | 356| 201 | Permission verification failed. The application does not have the permission required to call the API. | 357| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 358 359**示例:** 360 361```ts 362import { securityManager } from '@kit.MDMKit'; 363import { Want } from '@kit.AbilityKit'; 364 365let wantTemp: Want = { 366 // 需根据实际情况进行替换 367 bundleName: 'com.example.myapplication', 368 abilityName: 'EntryAbility' 369}; 370 371let policy: securityManager.PasswordPolicy = { 372 complexityRegex: '^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[!@#$%^&*])[a-zA-Z\\d!@#$%^&*]{8,}$', 373 validityPeriod: 1, 374 additionalDescription: '至少八个字符,至少一个大写字母,一个小写字母,一个数字和一个特殊字符', 375}; 376try { 377 securityManager.setPasswordPolicy(wantTemp, policy); 378 console.info(`Succeeded in setting password policy.`); 379} catch(err) { 380 console.error(`Failed to set password policy. Code: ${err.code}, message: ${err.message}`); 381} 382``` 383 384## securityManager.getPasswordPolicy 385 386getPasswordPolicy(admin: Want): PasswordPolicy 387 388获取设备口令策略。 389 390**需要权限:** ohos.permission.ENTERPRISE_MANAGE_SECURITY 391 392**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 393 394**模型约束:** 此接口仅可在Stage模型下使用。 395 396**参数:** 397 398| 参数名 | 类型 | 必填 | 说明 | 399| -------- | ---------------------------------------- | ---- | ------------------------------- | 400| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | 401 402**返回值:** 403 404| 类型 | 说明 | 405| --------------------- | ------------------------- | 406| [PasswordPolicy](#passwordpolicy) | 设备口令策略。 | 407 408**错误码**: 409 410以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 411 412| 错误码ID | 错误信息 | 413| ------- | ---------------------------------------------------------------------------- | 414| 9200001 | The application is not an administrator application of the device. | 415| 9200002 | The administrator application does not have permission to manage the device. | 416| 201 | Permission verification failed. The application does not have the permission required to call the API. | 417| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 418 419**示例:** 420 421```ts 422import { securityManager } from '@kit.MDMKit'; 423import { Want } from '@kit.AbilityKit'; 424 425let wantTemp: Want = { 426 // 需根据实际情况进行替换 427 bundleName: 'com.example.myapplication', 428 abilityName: 'EntryAbility' 429}; 430 431try { 432 let result: securityManager.PasswordPolicy = securityManager.getPasswordPolicy(wantTemp); 433 console.info(`Succeeded in getting password policy, result : ${JSON.stringify(result)}`); 434} catch(err) { 435 console.error(`Failed to get password policy. Code: ${err.code}, message: ${err.message}`); 436} 437``` 438 439## securityManager.setAppClipboardPolicy 440 441setAppClipboardPolicy(admin: Want, tokenId: number, policy: ClipboardPolicy): void 442 443设置设备剪贴板策略。 444 445**需要权限:** ohos.permission.ENTERPRISE_MANAGE_SECURITY 446 447**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 448 449**模型约束:** 此接口仅可在Stage模型下使用。 450 451**参数:** 452 453| 参数名 | 类型 | 必填 | 说明 | 454| -------- | ---------------------------------------- | ---- | ------------------------------- | 455| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | 456| tokenId | number | 是 | 目标应用的身份标识。可通过[bundleManager.getApplicationInfo](../apis-ability-kit/js-apis-bundleManager-applicationInfo.md)获取accessTokenId。当前只支持最多100个tokenId被保存策略。 | 457| policy | [ClipboardPolicy](#clipboardpolicy) | 是 | 剪贴板策略。 | 458 459**错误码**: 460 461以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 462 463| 错误码ID | 错误信息 | 464| ------- | ---------------------------------------------------------------------------- | 465| 9200001 | The application is not an administrator application of the device. | 466| 9200002 | The administrator application does not have permission to manage the device. | 467| 201 | Permission verification failed. The application does not have the permission required to call the API. | 468| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 469 470**示例:** 471 472```ts 473import { securityManager } from '@kit.MDMKit'; 474import { Want } from '@kit.AbilityKit'; 475 476let wantTemp: Want = { 477 // 需根据实际情况进行替换 478 bundleName: 'com.example.myapplication', 479 abilityName: 'EntryAbility' 480}; 481// 需根据实际情况进行替换 482let tokenId: number = 586874394; 483try { 484 securityManager.setAppClipboardPolicy(wantTemp, tokenId, securityManager.ClipboardPolicy.IN_APP); 485 console.info(`Succeeded in setting clipboard policy.`); 486} catch(err) { 487 console.error(`Failed to set clipboard policy. Code: ${err.code}, message: ${err.message}`); 488} 489``` 490 491## securityManager.getAppClipboardPolicy 492 493getAppClipboardPolicy(admin: Want, tokenId?: number): string 494 495获取设备剪贴板策略。 496 497**需要权限:** ohos.permission.ENTERPRISE_MANAGE_SECURITY 498 499**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 500 501**模型约束:** 此接口仅可在Stage模型下使用。 502 503**参数:** 504 505| 参数名 | 类型 | 必填 | 说明 | 506| -------- | ---------------------------------------- | ---- | ------------------------------- | 507| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | 508| tokenId | number | 否 | 目标应用的身份标识。可通过[bundleManager.getApplicationInfo](../apis-ability-kit/js-apis-bundleManager-applicationInfo.md)获取accessTokenId。当前只支持最多100个tokenId被保存策略。 | 509 510**返回值:** 511 512| 类型 | 说明 | 513| --------------------- | ------------------------- | 514| string | 返回JSON字符串形式的设备剪贴板策略。| 515 516**错误码**: 517 518以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 519 520| 错误码ID | 错误信息 | 521| ------- | ---------------------------------------------------------------------------- | 522| 9200001 | The application is not an administrator application of the device. | 523| 9200002 | The administrator application does not have permission to manage the device. | 524| 201 | Permission verification failed. The application does not have the permission required to call the API. | 525| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 526 527**示例:** 528 529```ts 530import { securityManager } from '@kit.MDMKit'; 531import { Want } from '@kit.AbilityKit'; 532 533let wantTemp: Want = { 534 // 需根据实际情况进行替换 535 bundleName: 'com.example.myapplication', 536 abilityName: 'EntryAbility' 537}; 538// 需根据实际情况进行替换 539let tokenId: number = 586874394; 540try { 541 let result: string = securityManager.getAppClipboardPolicy(wantTemp, tokenId); 542 console.info(`Succeeded in getting password policy, result : ${result}`); 543} catch(err) { 544 console.error(`Failed to set clipboard policy. Code: ${err.code}, message: ${err.message}`); 545} 546``` 547 548## securityManager.setAppClipboardPolicy<sup>18+</sup> 549 550setAppClipboardPolicy(admin: Want, bundleName: string, accountId: number, policy: ClipboardPolicy): void 551 552设置指定用户下指定应用的设备剪贴板策略。当前只支持最多保存100个策略。 553 554**需要权限:** ohos.permission.ENTERPRISE_MANAGE_SECURITY 555 556**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 557 558**模型约束:** 此接口仅可在Stage模型下使用。 559 560**参数:** 561 562| 参数名 | 类型 | 必填 | 说明 | 563| ------- | ------------------------------------------------------- | --- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | 564| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | 565| bundleName | string | 是 | 被设置剪贴板策略的应用包名。 | 566| accountId | number | 是 | 用户ID,指定具体用户,取值范围:大于等于0。accountId可以通过@ohos.account.osAccount中的[getOsAccountLocalId](../apis-basic-services-kit/js-apis-osAccount.md#getosaccountlocalid9-1)等接口来获取。 | 567| policy | [ClipboardPolicy](#clipboardpolicy) | 是 | 剪贴板策略。 | 568 569**错误码**: 570 571以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 572 573| 错误码ID | 错误信息 | 574| ------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | 575| 9200001 | The application is not an administrator application of the device. | 576| 9200002 | The administrator application does not have permission to manage the device. | 577| 201 | Permission verification failed. The application does not have the permission required to call the API. | 578 579**示例:** 580 581```ts 582import { securityManager } from '@kit.MDMKit'; 583import { Want } from '@kit.AbilityKit'; 584 585let wantTemp: Want = { 586 // 需根据实际情况进行替换 587 bundleName: 'com.example.myapplication', 588 abilityName: 'EntryAbility' 589}; 590// 需根据实际情况进行替换 591let bundleName: string = 'com.example.myapplication'; 592let accountId: number = 100; 593try { 594 securityManager.setAppClipboardPolicy(wantTemp, bundleName, accountId, securityManager.ClipboardPolicy.IN_APP); 595 console.info(`Succeeded in setting clipboard policy.`); 596} catch(err) { 597 console.error(`Failed to set clipboard policy. Code: ${err.code}, message: ${err.message}`); 598} 599``` 600 601## securityManager.getAppClipboardPolicy<sup>18+</sup> 602 603getAppClipboardPolicy(admin: Want, bundleName: string, accountId: number): string 604 605获取指定用户下指定应用的设备剪贴板策略。 606 607**需要权限:** ohos.permission.ENTERPRISE_MANAGE_SECURITY 608 609**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 610 611**模型约束:** 此接口仅可在Stage模型下使用。 612 613**参数:** 614 615| 参数名 | 类型 | 必填 | 说明 | 616| ------- | ------------------------------------------------------- | --- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | 617| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | 618| bundleName | string | 是 | 被设置剪贴板策略的应用包名。 | 619| accountId | number | 是 | 用户ID,指定具体用户,取值范围:大于等于0。accountId可以通过@ohos.account.osAccount中的[getOsAccountLocalId](../apis-basic-services-kit/js-apis-osAccount.md#getosaccountlocalid9-1)等接口来获取。 | 620 621**返回值:** 622 623| 类型 | 说明 | 624| ----------------------------------- | -------- | 625| string | 返回JSON字符串形式的设备剪贴板策略。 | 626 627**错误码**: 628 629以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 630 631| 错误码ID | 错误信息 | 632| ------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | 633| 9200001 | The application is not an administrator application of the device. | 634| 9200002 | The administrator application does not have permission to manage the device. | 635| 201 | Permission verification failed. The application does not have the permission required to call the API. | 636 637**示例:** 638 639```ts 640import { securityManager } from '@kit.MDMKit'; 641import { Want } from '@kit.AbilityKit'; 642 643let wantTemp: Want = { 644 // 需根据实际情况进行替换 645 bundleName: 'com.example.myapplication', 646 abilityName: 'EntryAbility' 647}; 648// 需根据实际情况进行替换 649let bundleName: string = 'com.example.myapplication'; 650let accountId: number = 100; 651try { 652 let result: string = securityManager.getAppClipboardPolicy(wantTemp, bundleName, accountId); 653 console.info(`Succeeded in getting password policy, result : ${result}`); 654} catch(err) { 655 console.error(`Failed to set clipboard policy. Code: ${err.code}, message: ${err.message}`); 656} 657``` 658 659## securityManager.setWatermarkImage<sup>14+</sup> 660 661setWatermarkImage(admin: Want, bundleName: string, source: string | image.PixelMap, accountId: number): void 662 663给指定用户设置水印策略。当前只支持最多保存100个策略。 664 665**需要权限:** ohos.permission.ENTERPRISE_MANAGE_SECURITY 666 667**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 668 669**模型约束:** 此接口仅可在Stage模型下使用。 670 671**参数:** 672 673| 参数名 | 类型 | 必填 | 说明 | 674| -------- | ---------------------------------------- | ---- | ------------------------------- | 675| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | 676| bundleName | string | 是 | 被设置水印的应用包名。 | 677| source | string \| [image.PixelMap](../apis-image-kit/arkts-apis-image-PixelMap.md) | 是 | string表示图像路径,图像路径为应用沙箱路径等应用有权限访问的路径。<br>image.PixelMap表示图像对象,图像像素占用大小不能超过500KB。 | 678| accountId | number | 是 | 用户ID。accountId可以通过@ohos.account.osAccount中的[getOsAccountLocalId](../apis-basic-services-kit/js-apis-osAccount.md#getosaccountlocalid9-1)等接口来获取。 | 679 680**错误码**: 681 682以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 683 684| 错误码ID | 错误信息 | 685| ------- | ---------------------------------------------------------------------------- | 686| 9200001 | The application is not an administrator application of the device. | 687| 9200002 | The administrator application does not have permission to manage the device. | 688| 201 | Permission verification failed. The application does not have the permission required to call the API. | 689| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 690 691**示例:** 692 693```ts 694import { securityManager } from '@kit.MDMKit'; 695import { Want } from '@kit.AbilityKit'; 696 697let wantTemp: Want = { 698 // 需根据实际情况进行替换 699 bundleName: 'com.example.myapplication', 700 abilityName: 'EntryAbility' 701}; 702// 需根据实际情况进行替换 703let bundleName: string = 'com.example.myapplication'; 704let source: string = '/data/storage/el1/base/test.png'; 705let accountId: number = 100; 706try { 707 securityManager.setWatermarkImage(wantTemp, bundleName, source, accountId); 708 console.info(`Succeeded in setting set watermarkImage policy.`); 709} catch(err) { 710 console.error(`Failed to set watermarkImage policy. Code: ${err.code}, message: ${err.message}`); 711} 712``` 713 714## securityManager.cancelWatermarkImage<sup>14+</sup> 715 716cancelWatermarkImage(admin: Want, bundleName: string, accountId: number): void 717 718取消指定用户的水印策略。 719 720**需要权限:** ohos.permission.ENTERPRISE_MANAGE_SECURITY 721 722**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 723 724**模型约束:** 此接口仅可在Stage模型下使用。 725 726**参数:** 727 728| 参数名 | 类型 | 必填 | 说明 | 729| -------- | ---------------------------------------- | ---- | ------------------------------- | 730| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | 731| bundleName | string | 是 | 被取消水印的应用包名。 | 732| accountId | number | 是 | 用户ID。accountId可以通过@ohos.account.osAccount中的[getOsAccountLocalId](../apis-basic-services-kit/js-apis-osAccount.md#getosaccountlocalid9-1)等接口来获取。 | 733 734**错误码**: 735 736以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 737 738| 错误码ID | 错误信息 | 739| ------- | ---------------------------------------------------------------------------- | 740| 9200001 | The application is not an administrator application of the device. | 741| 9200002 | The administrator application does not have permission to manage the device. | 742| 201 | Permission verification failed. The application does not have the permission required to call the API. | 743| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 744 745**示例:** 746 747```ts 748import { securityManager } from '@kit.MDMKit'; 749import { Want } from '@kit.AbilityKit'; 750 751let wantTemp: Want = { 752 // 需根据实际情况进行替换 753 bundleName: 'com.example.myapplication', 754 abilityName: 'EntryAbility' 755}; 756// 需根据实际情况进行替换 757let bundleName: string = 'com.example.myapplication'; 758let accountId: number = 100; 759try { 760 securityManager.cancelWatermarkImage(wantTemp, bundleName, accountId); 761 console.info(`Succeeded in setting cancel watermarkImage policy.`); 762} catch(err) { 763 console.error(`Failed to cancel watermarkImage policy. Code: ${err.code}, message: ${err.message}`); 764} 765``` 766 767## securityManager.setPermissionManagedState<sup>20+</sup> 768 769setPermissionManagedState(admin: Want, applicationInstance: ApplicationInstance, permissions: Array\<string>, managedState: PermissionManagedState): void 770 771设置指定应用的[user_grant权限](../../security/AccessToken/permissions-for-all-user.md)的管理策略。 772 773**需要权限:** ohos.permission.ENTERPRISE_MANAGE_USER_GRANT_PERMISSION 774 775**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 776 777**模型约束:** 此接口仅可在Stage模型下使用。 778 779**参数:** 780 781| 参数名 | 类型 | 必填 | 说明 | 782| -------- | ---------------------------------------- | ---- | ------------------------------- | 783| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | 784| applicationInstance | [ApplicationInstance](#applicationinstance20) | 是 | 指定应用实例。 | 785| permissions | Array<string> | 是 | 需要管理的权限名称列表,仅支持user_grant权限。 | 786| managedState | [PermissionManagedState](#permissionmanagedstate20) | 是 | 应用权限的管理策略。 | 787 788**错误码**: 789 790以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 791 792| 错误码ID | 错误信息 | 793| ------- | ---------------------------------------------------------------------------- | 794| 9200001 | The application is not an administrator application of the device. | 795| 9200002 | The administrator application does not have permission to manage the device. | 796| 9200010 | A conflict policy has been configured. | 797| 9200012 | Parameter verification failed. | 798| 201 | Permission verification failed. The application does not have the permission required to call the API. | 799 800**示例:** 801 802```ts 803import { Want } from '@kit.AbilityKit'; 804import { securityManager } from '@kit.MDMKit'; 805 806let wantTemp: Want = { 807 // 需根据实际情况进行替换 808 bundleName: 'com.example.myapplication', 809 abilityName: 'EntryAbility' 810}; 811let appInstanceTemp: securityManager.ApplicationInstance = { 812 // 需根据实际情况进行替换 813 appIdentifier: '736498586', 814 appIndex: 0, 815 accountId: 100 816}; 817let permissionsTemp: Array<string> = ['ohos.permission.CAMERA', 'ohos.permission.LOCATION']; 818try { 819 securityManager.setPermissionManagedState(wantTemp, appInstanceTemp, permissionsTemp, securityManager.PermissionManagedState.GRANTED); 820 console.info('Succeeded in setting permission managed state.'); 821} catch(err) { 822 console.error(`Failed to set permission managed state. Code: ${err.code}, message: ${err.message}`); 823} 824``` 825 826## securityManager.getPermissionManagedState<sup>20+</sup> 827 828getPermissionManagedState(admin: Want, applicationInstance: ApplicationInstance, permission: string): PermissionManagedState 829 830获取指定应用的指定[user_grant权限](../../security/AccessToken/permissions-for-all-user.md)的管理策略。 831 832**需要权限:** ohos.permission.ENTERPRISE_MANAGE_USER_GRANT_PERMISSION 833 834**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 835 836**模型约束:** 此接口仅可在Stage模型下使用。 837 838**参数:** 839 840| 参数名 | 类型 | 必填 | 说明 | 841| -------- | ---------------------------------------- | ---- | ------------------------------- | 842| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | 843| applicationInstance | [ApplicationInstance](#applicationinstance20) | 是 | 指定应用实例。 | 844| permission | string | 是 | 需要获取管理策略的权限名称,仅支持user_grant权限。 | 845 846**返回值:** 847 848| 类型 | 说明 | 849| --------------------- | ------------------------- | 850| [PermissionManagedState](#permissionmanagedstate20) | 应用权限的管理策略。| 851 852**错误码**: 853 854以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 855 856| 错误码ID | 错误信息 | 857| ------- | ---------------------------------------------------------------------------- | 858| 9200001 | The application is not an administrator application of the device. | 859| 9200002 | The administrator application does not have permission to manage the device. | 860| 9200012 | Parameter verification failed. | 861| 201 | Permission verification failed. The application does not have the permission required to call the API. | 862 863**示例:** 864 865```ts 866import { Want } from '@kit.AbilityKit'; 867import { securityManager } from '@kit.MDMKit'; 868 869let wantTemp: Want = { 870 // 需根据实际情况进行替换 871 bundleName: 'com.example.myapplication', 872 abilityName: 'EntryAbility' 873}; 874let appInstanceTemp: securityManager.ApplicationInstance = { 875 // 需根据实际情况进行替换 876 appIdentifier: '736498586', 877 appIndex: 0, 878 accountId: 100 879}; 880let permissionTemp: string = 'ohos.permission.ENTERPRISE_MANAGE_USER_GRANT_PERMISSION'; 881try { 882 let result: securityManager.PermissionManagedState = securityManager.getPermissionManagedState(wantTemp, appInstanceTemp, permissionTemp); 883 console.info(`Succeeded in getting permission managed state, result : ${result}`); 884} catch(err) { 885 console.error(`Failed to get permission managed state. Code: ${err.code}, message: ${err.message}`); 886} 887``` 888 889## CertBlob 890 891证书信息。 892 893**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 894 895| 名称 | 类型 | 只读 | 可选 | 说明 | 896| ------ | ---------- | ---- | ---- | ------------------ | 897| inData | Uint8Array | 否 | 否 |证书的二进制内容。 | 898| alias | string | 否 | 否 |证书别名。 | 899 900## PasswordPolicy 901 902设备口令策略。 903 904**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 905 906| 名称 | 类型 | 只读 | 可选 | 说明 | 907| ----------- | --------| ---- | ---- | --------------------------- | 908| complexityRegex | string | 否 | 是 | 口令复杂度正则表达式。 | 909| validityPeriod | number | 否 | 是 | 密码有效期(单位:毫秒)。 | 910| additionalDescription | string | 否 | 是 | 描述文本。 | 911 912## ClipboardPolicy 913 914设备剪贴板策略。 915 916**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 917 918| 名称 | 值 | 说明 | 919| ----------- | -------- | ------------------------------- | 920| DEFAULT | 0 | 默认,表示无策略。 | 921| IN_APP | 1 | 剪贴板可在同一应用使用。 | 922| LOCAL_DEVICE | 2 | 剪贴板可在同一设备使用。 | 923| CROSS_DEVICE | 3 | 剪贴板可跨设备使用。 | 924 925## ApplicationInstance<sup>20+</sup> 926 927应用实例。 928 929**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 930 931**模型约束:** 此接口仅可在Stage模型下使用。 932 933| 名称 | 类型 | 只读 | 可选 | 说明 | 934| ----------- | --------| ---- | ---- | --------------------------- | 935| appIdentifier | string | 否 | 否 | 应用[唯一标识符](../apis-ability-kit/js-apis-bundleManager-bundleInfo.md#signatureinfo),如果应用没有appIdentifier可使用appId代替,可以通过接口[bundleManager.getBundleInfo](../apis-ability-kit/js-apis-bundleManager.md#bundlemanagergetbundleinfo14-2)获取bundleInfo.signatureInfo.appIdentifier和bundleInfo.signatureInfo.appId。| 936| accountId | number | 否 | 否 | 用户ID,指定具体用户,取值范围:大于等于0。accountId可以通过@ohos.account.osAccount中的[getOsAccountLocalId](../apis-basic-services-kit/js-apis-osAccount.md#getosaccountlocalid9-1)等接口来获取。 | 937| appIndex | number | 否 | 否 | 表示分身应用的索引,默认值为0。<br> appIndex为0时,表示主应用。appIndex大于0时,表示指定的分身应用。 | 938 939## PermissionManagedState<sup>20+</sup> 940 941应用权限的管理状态。 942 943**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 944 945**模型约束:** 此接口仅可在Stage模型下使用。 946 947| 名称 | 值 | 说明 | 948| ----------- | -------- | ------------------------------- | 949| DEFAULT | 1 | 默认由用户授予。 | 950| GRANTED | 0 | 已静默授予。 | 951| DENIED | -1 | 已静默拒绝。 |