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