介绍
本示例选择应用进行注册/登录,并设置帐号相关信息,简要说明应用帐号管理相关功能。效果图如下:
效果预览
使用说明参考鸿蒙文档:[qr23.cn/AKFP8k
]
1.首页面选择想要进入的应用,首次进入该应用需要进行注册,如已注册帐号则直接登录。
2.注册页面可设置帐号名、邮箱、个性签名、密码(带*号为必填信息),注册完成后返回登录页面使用注册的帐号进行登录。
3.登录后进入帐号详情界面,点击修改信息按钮可跳转至帐号信息修改页面重新设置帐号信息。
4.点击切换应用按钮则退出该帐号并返回首页面。重新选择想要进入的应用。
5.点击删除帐号按钮则会删除该帐号所有相关信息。
代码解读
Harmony与OpenHarmoy鸿蒙文档添加
mau123789是v直接拿取
entry/src/main/ets/
|---common
| |---AccountInfo.ets // 切换应用组件
| |---BundleInfo.ets // 首页列表组件
| |---LoginInfo.ets // 登录组件
| |---ModifyInfo.ets // 修改信息组件
| |---NavigationBar.ets // 路由跳转组件
| |---RegisterInfo.ets // 注册组件
|---entryAbility
| |---EntryAbility.ts
|---model
| |---AccountData.ts // 数据存储
| |---AccountModel.ts // 数据管理
| |---Logger.ts // 日志工具
|---pages
| |---Index.ets // 首页
| |---Account.ets // 切换应用页面
| |---Login.ets // 登录页面
| |---Modify.ets // 修改信息页面
| |---Register.ets // 注册信息页面
具体实现
- 本示例分为音乐,视频,地图三个模块
- 音乐模块
- 使用Navigation,Button,Text,TextInput组件开发注册,登录,修改信息和切换应用页面, createAppAccountManager方法创建应用帐号管理器对象
- 源码链接:[AccountData.ts]
- 音乐模块
/*
* Copyright (c) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import Logger from '../model/Logger'
import common from '@ohos.app.ability.common'
import preferences from '@ohos.data.preferences'
const TAG: string = '[AccountData]'
export class AccountData {
static instance: AccountData = null
private storage: preferences.Preferences = null
public static getInstance() {
if (this.instance === null) {
this.instance = new AccountData()
}
return this.instance
}
async getFromStorage(context: common.Context, url: string) {
let name = url
Logger.info(TAG, `Name is ${name}`)
try {
this.storage = await preferences.getPreferences(context, `${name}`)
} catch (err) {
Logger.error(`getStorage failed, code is ${err.code}, message is ${err.message}`)
}
if (this.storage === null) {
Logger.info(TAG, `Create stroage is fail.`)
}
}
async getStorage(context: common.Context, url: string) {
this.storage = null
await this.getFromStorage(context, url)
return this.storage
}
async putStorageValue(context: common.Context, key: string, value: string, url: string) {
this.storage = await this.getStorage(context, url)
try {
await this.storage.put(key, value)
await this.storage.flush()
Logger.info(TAG, `put key && value success`)
} catch (err) {
Logger.info(TAG, `aaaaaa put failed`)
}
return
}
async hasStorageValue(context: common.Context, key: string, url: string) {
this.storage = await this.getStorage(context, url)
let result
try {
result = await this.storage.has(key)
} catch (err) {
Logger.error(`hasStorageValue failed, code is ${err.code}, message is ${err.message}`)
}
Logger.info(TAG, `hasStorageValue success result is ${result}`)
return result
}
async getStorageValue(context: common.Context, key: string, url: string) {
this.storage = await this.getStorage(context, url)
let getValue
try {
getValue = await this.storage.get(key, 'null')
} catch (err) {
Logger.error(`getStorageValue failed, code is ${err.code}, message is ${err.message}`)
}
Logger.info(TAG, `getStorageValue success`)
return getValue
}
async deleteStorageValue(context: common.Context, key: string, url: string) {
this.storage = await this.getStorage(context, url)
try {
await this.storage.delete(key)
await this.storage.flush()
} catch (err) {
Logger.error(`deleteStorageValue failed, code is ${err.code}, message is ${err.message}`)
}
Logger.info(TAG, `delete success`)
return
}
}
[AccountModel.ts]
/*
* Copyright (c) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import Logger from '../model/Logger'
import appAccount from '@ohos.account.appAccount'
const TAG: string = '[AccountModel]'
const app: appAccount.AppAccountManager = appAccount.createAppAccountManager()
export class AccountModel {
async addAccount(username: string) {
await app.addAccount(username)
Logger.info(TAG, `addAccount success`)
return
}
async deleteAccount(username: string) {
await app.deleteAccount(username)
Logger.info(TAG, `deleteAccount success`)
return
}
async setAccountCredential(username: string, credentialType: string, credential: string) {
await app.setAccountCredential(username, credentialType, credential)
Logger.info(TAG, `setAccountCredential success`)
return
}
async setAccountExtraInfo(name: string, extraInfo: string) {
await app.setAccountExtraInfo(name, extraInfo)
Logger.info(TAG, `setAccountExtraInfo success`)
return
}
async setAssociatedData(name: string, key: string, value: string) {
await app.setAssociatedData(name, key, value)
Logger.info(TAG, `setAssociatedData success`)
return
}
async getAccountCredential(name: string, credentialType: string) {
let result = await app.getAccountCredential(name, credentialType)
Logger.info(TAG, `getAccountCredential success`)
return result
}
async getAccountExtraInfo(name: string) {
let result = await app.getAccountExtraInfo(name)
Logger.info(TAG, `getAccountExtraInfo success`)
return result
}
async getAssociatedData(name: string, key: string) {
let result = await app.getAssociatedData(name, key)
Logger.info(TAG, `getAssociatedData success`)
return result
}
}
- 接口参考:[@ohos.account.appAccount],[@ohos.data.preferences],[@ohos.router]
- 视频模块
- 使用Navigation,Button,Text,TextInput组件开发注册,登录,修改信息和切换应用页面,createAppAccountManager方法创建应用帐号管理器对象
- 源码链接:[AccountData.ts],[AccountModel.ts]
- 接口参考:[@ohos.account.appAccount],[@ohos.data.preferences],[@ohos.router]
- 地图模块
- 使用Navigation,Button,Text,TextInput组件开发注册,登录,修改信息和切换应用页面,createAppAccountManager方法创建应用帐号管理器对象
- 源码链接:[AccountData.ts],[AccountModel.ts]
- 接口参考:[@ohos.account.appAccount],[@ohos.data.preferences],[@ohos.router]
- 视频模块
审核编辑 黄宇
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
鸿蒙
+关注
关注
57文章
2349浏览量
42837 -
HarmonyOS
+关注
关注
79文章
1974浏览量
30171
发布评论请先 登录
相关推荐
HarmonyOS应用开发-编译、调试、应用发布资料
Studio提供了基于各种编写代码及不同设备的调试功能,如果使用了多种代码编写应用,请参考选择调试代码类型进行配置后启动调试,调试过程中基于不同的代码进行断点管理。开发者完成HarmonyOS应用
发表于 09-21 16:29
【HarmonyOS】开发跨设备的鸿蒙(HarmonyOS) App
是圆形(如智能手表),这就给开发App带来了麻烦。现在几乎每一个智能设备厂商,如Apple、华为都面临这个问题。这就要求我们开发的App尽可能适合更多的智能设备。当然,最简单,最直接的
发表于 11-02 15:18
【HarmonyOS】开发跨设备的鸿蒙(HarmonyOS)App
手表),这就给开发App带来了麻烦。现在几乎每一个智能设备厂商,如Apple、华为都面临这个问题。这就要求我们开发的App尽可能适合更多的智能设备。当然,最简单,最直接的方式是为每一类
发表于 11-03 16:54
如何优雅地开发HarmonyOS APP应用
` 本帖最后由 软通动力HOS 于 2021-3-10 15:29 编辑
研究HarmonyOS有一段时间了,今天主要结合自己多年的项目开发经验和各种技术栈结合HarmonyOS APP
发表于 03-10 15:13
【视频】应用开发第4期:原子化服务帐号授权
介绍HarmonyOS Connect应用如何引入华为帐号能力,以及帐号能力在工程中的业务流。帐号服务开发指南:https://develo
发表于 12-14 11:54
harmonyOS开发的APP如何访问Webservice?
我接到一个项目,需要用到HarmonyOS开发APP做为移动手机查询和收到报警数据,具体是这样的,在C/S加B/S的系统框架下我们有数据库服务器和Web服务器,有widows桌面应用和Web浏览器
发表于 03-28 10:14
HarmonyOS APP打包运行和调试应用开发步骤
在进行HarmonyOS应用开发前,您应该掌握HarmonyOS应用的逻辑结构。HarmonyOS应用发布形态为APP Pack(Appli
发表于 05-24 14:27
HarmonyOS Connect “Device Partner”专场FAQ来啦!
HarmonyOS Connect生态,共同提升消费者的智慧生活体验。
在接入HarmonyOS Connect生态的过程中,你是否对团队管理、帐号找回、产品委托、产品信息查询等功能的
发表于 02-27 11:07
HarmonyOS Connect “Device Partner”专场FAQ来啦!
HarmonyOS Connect生态,共同提升消费者的智慧生活体验。 在接入HarmonyOS Connect生态的过程中,你是否对团队管理、帐号找回、产品委托、产品信息查询等功能的
评论