• 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### 账号类型
15
16当前,系统仅允许创建以下预定义类型的系统账号:
17| 名称   | 值 | 说明         |
18| ------ | ------ | ----------- |
19| ADMIN  | 0      | 管理员账号。 |
20| NORMAL | 1      | 普通账号。   |
21| GUEST  | 2      | 访客账号。   |
22| PRIVATE<sup>12+</sup> | 1024  | 隐私账号。   |
23
24### 账号完整信息
25
26系统账号的完整信息请参考[OsAccountInfo](../../reference/apis-basic-services-kit/js-apis-osAccount.md#osaccountinfo)定义。
27
28## 开发准备
29
301. 申请权限:ohos.permission.MANAGE_LOCAL_ACCOUNTS。申请流程请参考:[申请应用权限](../../security/AccessToken/determine-application-mode.md#system_basic等级应用申请权限的方式)。
31
322. 导入系统账号模块。
33
34   ```ts
35   import { osAccount, BusinessError } from '@kit.BasicServicesKit';
36   ```
37
383. 获取账号管理单实例对象。
39
40   ```ts
41   let accountManager = osAccount.getAccountManager();
42   ```
43
44## 创建系统账号
45
46系统初始化阶段,会创建默认系统账号。此外,可以创建多个系统账号,以满足用户不同诉求。
47
48具体开发实例如下:
49
50调用[createOsAccount](../../reference/apis-basic-services-kit/js-apis-osAccount-sys.md#createosaccount)接口,指定昵称和类型信息来创建系统账号。
51
52```ts
53let name: string = 'Bob';
54let type: osAccount.OsAccountType = osAccount.OsAccountType.NORMAL;
55
56accountManager.createOsAccount(name, type, (err: BusinessError, osAccountInfo: osAccount.OsAccountInfo)=>{
57  console.info(`createOsAccount code is ${err.code}, message is ${err.message}`);
58  console.info('createOsAccount osAccountInfo:' + JSON.stringify(osAccountInfo));
59});
60```
61
62## 查询所有已创建的系统账号
63
64账号管理界面通常需要获取所有账号信息,以方便用户操作不同账号。
65
66具体开发实例如下:
67
68调用[queryAllCreatedOsAccounts](../../reference/apis-basic-services-kit/js-apis-osAccount-sys.md#queryallcreatedosaccounts)接口查询全量账号。
69
70```ts
71accountManager.queryAllCreatedOsAccounts((err: BusinessError, accountArr: osAccount.OsAccountInfo[])=>{
72  console.info(`queryAllCreatedOsAccounts code is ${err.code}, message is ${err.message}`);
73  console.info('queryAllCreatedOsAccounts accountArr:' + JSON.stringify(accountArr));
74});
75```
76
77## 查询指定系统账号信息
78
79除了查询所有账号信息,还可以根据账号标识查询指定系统账号的详细信息。
80
81具体开发实例如下:
82
83调用[queryOsAccountById](../../reference/apis-basic-services-kit/js-apis-osAccount-sys.md#queryosaccountbyid)接口查询指定账号的详细信息。
84
85```ts
86let localId: number = 100;
87accountManager.queryOsAccountById(localId, (err: BusinessError, accountInfo: osAccount.OsAccountInfo)=>{
88  console.info(`queryOsAccountById code is ${err.code}, message is ${err.message}`);
89  console.info('queryOsAccountById accountInfo:' + JSON.stringify(accountInfo));
90});
91```
92
93## 修改系统账号头像和昵称
94
95可以修改系统账号的头像、昵称,以满足用户的个性化需求。
96
97具体开发实例如下:
98
991. 调用[setOsAccountProfilePhoto](../../reference/apis-basic-services-kit/js-apis-osAccount-sys.md#setosaccountprofilephoto)接口修改系统账号头像。
100
101   ```ts
102   let localId: number = 100;
103   let newPhoto: string = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAPCAYAAAA/I0V3AAAAAXNSR0IArs4c6QAAAARnQU1BAA'+
104   'Cxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACwSURBVDhPvZLBDYMwDEV/ugsXRjAT0EHCOuFIBwkbdIRewi6unbiAyoGgSn1SFH85+Y'+
105   'q/4ljARW62X+LHS8uIzjm4dXUYF+utzBikB52Jo5e5iEPKqpACk7R9NM2RvWm5tIkD2czLCUFNKLD6IjdMHFHDzws285MgGrT0xCtp3WOKHo'+
106   '+7q0mP0DZW9pNmoEFUzrQjp5cCnaen2kSJXLFD8ghbXyZCMQf/8e8Ns1XVAG/XAgqKzVnJFAAAAABJRU5ErkJggg=='
107
108   accountManager.setOsAccountProfilePhoto(localId, newPhoto, (err: BusinessError)=>{
109     console.info(`setOsAccountProfilePhoto code is ${err.code}, message is ${err.message}`);
110   });
111   ```
112
1132. 调用[setOsAccountName](../../reference/apis-basic-services-kit/js-apis-osAccount-sys.md#setosaccountname)接口修改系统账号名称。
114
115   ```ts
116   let localId: number = 100;
117   let newName: string = 'Tom';
118   accountManager.setOsAccountName(localId, newName, (err: BusinessError) => {
119     if (err) {
120       console.error(`setOsAccountName failed, code is ${err.code}, message is ${err.message}`);
121     } else {
122       console.info('setOsAccountName successfully');
123     }
124   });
125   ```
126
127## 激活系统账号
128
129系统账号默认处于未激活状态,需要激活后才能使用。开发者可以使用[activateOsAccount](../../reference/apis-basic-services-kit/js-apis-osAccount-sys.md#activateosaccount)接口完成此操作。
130
131具体开发实例如下:
132
133调用[activateOsAccount](../../reference/apis-basic-services-kit/js-apis-osAccount-sys.md#activateosaccount)接口激活指定系统账号。
134
135```ts
136let localId: number = 101;
137accountManager.activateOsAccount(localId, (err: BusinessError)=>{
138  if (err) {
139    console.error(`activateOsAccount failed, code is ${err.code}, message is ${err.message}`);
140  } else {
141    console.info('activateOsAccount successfully');
142  }
143});
144```
145
146## 删除系统账号
147
148不再使用某个系统账号时,可以删除该账号。
149
150具体开发实例如下:
151
152调用[removeOsAccount](../../reference/apis-basic-services-kit/js-apis-osAccount-sys.md#removeosaccount)接口删除指定的账号。
153
154```ts
155let localId: number = 101;
156accountManager.removeOsAccount(localId, (err: BusinessError)=>{
157  if (err) {
158      console.error(`removeOsAccount failed, code is ${err.code}, message is ${err.message}`);
159  } else {
160      console.info('removeOsAccount successfully');
161  }
162});
163```
164