• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 使用约束管控系统账号(仅对系统应用开放)
2
3<!--Kit: Basic Services Kit-->
4<!--Subsystem: Account-->
5<!--Owner: @steven-q-->
6<!--Designer: @JiDong-CS1-->
7<!--Tester: @zhaimengchao-->
8<!--Adviser: @zengyawen-->
9
10账号管理模块提供了基于角色的访问控制机制,用户可以为系统账号设置约束,以限制目标账号的行为。
11
12## 约束列表
13
14预定义的账号约束条件,可以参考:[系统账号约束列表](../../reference/apis-basic-services-kit/js-apis-osAccount.md#系统账号约束列表)。
15
16## 开发准备
17
181. 申请权限:ohos.permission.MANAGE_LOCAL_ACCOUNTS。申请流程请参考:[申请应用权限](../../security/AccessToken/determine-application-mode.md#system_basic等级应用申请权限的方式)。
19
202. 导入系统账号模块。
21
22   ```ts
23   import { osAccount } from '@kit.BasicServicesKit';
24   ```
25
263. 获取系统账号的单实例对象。
27
28   ```ts
29   let accountManager = osAccount.getAccountManager();
30   ```
31
32## 设置指定系统账号的约束列表
33
34设备所有者可以给指定系统账号设置约束,以限制该账号的行为。例如在家长模式下,家长可以禁止儿童打开WIFI、安装应用等。
35
36具体开发实例如下:
37
381. 指定系统账号标识和待使能的约束集合。
39
40   ```ts
41   let localId: number = 100;
42   let constraint: string[] = [ 'constraint.wifi.set' ];
43   ```
44
452. 调用[setOsAccountConstraints](../../reference/apis-basic-services-kit/js-apis-osAccount-sys.md#setosaccountconstraints)接口,使能系统账号100的约束。
46
47   ```ts
48   try {
49     accountManager.setOsAccountConstraints(localId, constraint, true);
50     console.info('setOsAccountConstraints successfully');
51   } catch (err) {
52     console.error(`setOsAccountConstraints failed, error: code is ${err.code}, message is ${err.message}`);
53   }
54   ```
55
56## 判断目标系统账号的指定约束是否使能
57
58业务应用需要判断目标系统账号的指定约束是否使能,以此来决策是否对目标系统账号的行为做管控。开发者可以使用[isOsAccountConstraintEnabled](../../reference/apis-basic-services-kit/js-apis-osAccount-sys.md#isosaccountconstraintenabled11)接口完成此操作。
59
60具体开发实例如下:
61
621. 指定系统账号标识和约束名称。
63
64   ```ts
65   let localId: number = 100;
66   let constraint: string = 'constraint.wifi.set';
67   ```
68
692. 调用[isOsAccountConstraintEnabled](../../reference/apis-basic-services-kit/js-apis-osAccount-sys.md#isosaccountconstraintenabled11)接口,判断指定约束是否使能。
70
71   ```ts
72   accountManager.isOsAccountConstraintEnabled(localId, constraint).then((isEnabled: boolean) => {
73     if (isEnabled) {
74        // your business logic
75     }
76   });
77   ```
78