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