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