0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-04-14 09:46 次阅读

介绍

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

效果预览

image.png

使用说明参考鸿蒙文档:[qr23.cn/AKFP8k]

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

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开发实例:【状态管理

    从数据的传递形式来看,可以分为只读的单向传递和可变更的双向传递。如下图所示,开发框架提供了多种应用程序状态管理的能力。
    的头像 发表于 04-10 09:38 808次阅读
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>开发</b><b class='flag-5'>实例</b>:【状态<b class='flag-5'>管理</b>】

    HarmonyOS应用开发-编译、调试、应用发布资料

    Studio提供了基于各种编写代码及不同设备的调试功能,如果使用了多种代码编写应用,请参考选择调试代码类型进行配置后启动调试,调试过程中基于不同的代码进行断点管理开发者完成HarmonyOS应用
    发表于 09-21 16:29

    HarmonyOS开发跨设备的鸿蒙(HarmonyOSApp

    是圆形(如智能手表),这就给开发App带来了麻烦。现在几乎每一个智能设备厂商,如Apple、华为都面临这个问题。这就要求我们开发App尽可能适合更多的智能设备。当然,最简单,最直接的
    发表于 11-02 15:18

    HarmonyOS开发跨设备的鸿蒙(HarmonyOSApp

    手表),这就给开发App带来了麻烦。现在几乎每一个智能设备厂商,如Apple、华为都面临这个问题。这就要求我们开发App尽可能适合更多的智能设备。当然,最简单,最直接的方式是为每一类
    发表于 11-03 16:54

    如何优雅地开发HarmonyOS APP应用

    ` 本帖最后由 软通动力HOS 于 2021-3-10 15:29 编辑 研究HarmonyOS有一段时间了,今天主要结合自己多年的项目开发经验和各种技术栈结合HarmonyOS APP
    发表于 03-10 15:13

    戈帅 开发HarmonyOS APP《拼夕夕》演示

    戈帅 开发HarmonyOS APP《拼夕夕》演示
    发表于 08-28 17:39

    【视频】应用开发第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

    餐饮管理APP开发

     【粉果科技】专注于APP开发—深圳APP开发公司解释到:随着移动互联网的来了,通过餐饮管理APP
    发表于 06-26 11:57 374次阅读

    HarmonyOS Connect “Device Partner”专场FAQ来啦!

    HarmonyOS Connect生态,共同提升消费者的智慧生活体验。 在接入HarmonyOS Connect生态的过程中,你是否对团队管理帐号找回、产品委托、产品信息查询等功能的
    的头像 发表于 02-24 09:10 626次阅读

    鸿蒙开发设备管理:ohos.account.appAccount 应用帐号管理

    应用帐号管理:获取应用帐号模块对象。
    的头像 发表于 07-06 10:43 674次阅读
    鸿蒙<b class='flag-5'>开发</b>设备<b class='flag-5'>管理</b>:ohos.account.appAccount 应用<b class='flag-5'>帐号</b><b class='flag-5'>管理</b>

    鸿蒙开发管理:ohos.account.distributedAccount 分布式帐号管理

    获取分布式帐号实例对象。
    的头像 发表于 07-08 10:03 243次阅读
    鸿蒙<b class='flag-5'>开发</b><b class='flag-5'>管理</b>:ohos.account.distributedAccount 分布式<b class='flag-5'>帐号</b><b class='flag-5'>管理</b>

    鸿蒙开发管理:ohos.account.osAccount 系统帐号管理

    本模块提供管理系统帐号的一些基础能力,包括系统帐号的添加、删除、查询、设置、订阅、启动等功能,提供系统帐号数据落盘的能力。
    的头像 发表于 07-08 09:54 347次阅读
    鸿蒙<b class='flag-5'>开发</b><b class='flag-5'>管理</b>:ohos.account.osAccount 系统<b class='flag-5'>帐号</b><b class='flag-5'>管理</b>