HarmonyOS开发实例:【app帐号管理】

2024-04-14 04:28

本文主要是介绍HarmonyOS开发实例:【app帐号管理】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

应用帐号管理

介绍

本示例选择应用进行注册/登录,并设置帐号相关信息,简要说明应用帐号管理相关功能。效果图如下:

效果预览

image.png

使用说明参考鸿蒙文档:qr23.cn/AKFP8k点击或者转到。

搜狗高速浏览器截图20240326151344.png

1.首页面选择想要进入的应用,首次进入该应用需要进行注册,如已注册帐号则直接登录。

2.注册页面可设置帐号名、邮箱、个性签名、密码(带*号为必填信息),注册完成后返回登录页面使用注册的帐号进行登录。

3.登录后进入帐号详情界面,点击修改信息按钮可跳转至帐号信息修改页面重新设置帐号信息。

4.点击切换应用按钮则退出该帐号并返回首页面。重新选择想要进入的应用。

5.点击删除帐号按钮则会删除该帐号所有相关信息。

代码解读

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 = nullprivate storage: preferences.Preferences = nullpublic static getInstance() {if (this.instance === null) {this.instance = new AccountData()}return this.instance}async getFromStorage(context: common.Context, url: string) {let name = urlLogger.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 = nullawait 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 resulttry {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 getValuetry {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]

鸿蒙开发岗位需要掌握那些核心要领?

目前还有很多小伙伴不知道要学习哪些鸿蒙技术?不知道重点掌握哪些?为了避免学习时频繁踩坑,最终浪费大量时间的。

自己学习时必须要有一份实用的鸿蒙(Harmony NEXT)资料非常有必要。 这里我推荐,根据鸿蒙开发官网梳理与华为内部人员的分享总结出的开发文档。内容包含了:【ArkTS、ArkUI、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战】等技术知识点。

废话就不多说了,接下来好好看下这份资料。

如果你是一名Android、Java、前端等等开发人员,想要转入鸿蒙方向发展。可以直接领取这份资料辅助你的学习。鸿蒙OpenHarmony知识←前往。下面是鸿蒙开发的学习路线图。

针对鸿蒙成长路线打造的鸿蒙学习文档。鸿蒙(OpenHarmony )学习手册(共计1236页)与鸿蒙(OpenHarmony )开发入门教学视频,帮助大家在技术的道路上更进一步。

其中内容包含:

《鸿蒙开发基础》鸿蒙OpenHarmony知识←前往

  1. ArkTS语言
  2. 安装DevEco Studio
  3. 运用你的第一个ArkTS应用
  4. ArkUI声明式UI开发
  5. .……

《鸿蒙开发进阶》鸿蒙OpenHarmony知识←前往

  1. Stage模型入门
  2. 网络管理
  3. 数据管理
  4. 电话服务
  5. 分布式应用开发
  6. 通知与窗口管理
  7. 多媒体技术
  8. 安全技能
  9. 任务管理
  10. WebGL
  11. 国际化开发
  12. 应用测试
  13. DFX面向未来设计
  14. 鸿蒙系统移植和裁剪定制
  15. ……

《鸿蒙开发实战》鸿蒙OpenHarmony知识←前往

  1. ArkTS实践
  2. UIAbility应用
  3. 网络案例
  4. ……

最后

鸿蒙是完全具备无与伦比的机遇和潜力的;预计到年底将有 5,000 款的应用完成原生鸿蒙开发,这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行!

这篇关于HarmonyOS开发实例:【app帐号管理】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/902068

相关文章

使用DeepSeek API 结合VSCode提升开发效率

《使用DeepSeekAPI结合VSCode提升开发效率》:本文主要介绍DeepSeekAPI与VisualStudioCode(VSCode)结合使用,以提升软件开发效率,具有一定的参考价值... 目录引言准备工作安装必要的 VSCode 扩展配置 DeepSeek API1. 创建 API 请求文件2.

java图像识别工具类(ImageRecognitionUtils)使用实例详解

《java图像识别工具类(ImageRecognitionUtils)使用实例详解》:本文主要介绍如何在Java中使用OpenCV进行图像识别,包括图像加载、预处理、分类、人脸检测和特征提取等步骤... 目录前言1. 图像识别的背景与作用2. 设计目标3. 项目依赖4. 设计与实现 ImageRecogni

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

Java操作ElasticSearch的实例详解

《Java操作ElasticSearch的实例详解》Elasticsearch是一个分布式的搜索和分析引擎,广泛用于全文搜索、日志分析等场景,本文将介绍如何在Java应用中使用Elastics... 目录简介环境准备1. 安装 Elasticsearch2. 添加依赖连接 Elasticsearch1. 创

使用C#代码计算数学表达式实例

《使用C#代码计算数学表达式实例》这段文字主要讲述了如何使用C#语言来计算数学表达式,该程序通过使用Dictionary保存变量,定义了运算符优先级,并实现了EvaluateExpression方法来... 目录C#代码计算数学表达式该方法很长,因此我将分段描述下面的代码片段显示了下一步以下代码显示该方法如

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

macOS怎么轻松更换App图标? Mac电脑图标更换指南

《macOS怎么轻松更换App图标?Mac电脑图标更换指南》想要给你的Mac电脑按照自己的喜好来更换App图标?其实非常简单,只需要两步就能搞定,下面我来详细讲解一下... 虽然 MACOS 的个性化定制选项已经「缩水」,不如早期版本那么丰富,www.chinasem.cn但我们仍然可以按照自己的喜好来更换

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结