在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

    文章

    2365

    瀏覽量

    42894
  • HarmonyOS
    +關注

    關注

    79

    文章

    1978

    瀏覽量

    30273
收藏 人收藏

    評論

    相關推薦

    HarmonyOS開發實例:【狀態管理

    從數據的傳遞形式來看,可以分為只讀的單向傳遞和可變更的雙向傳遞。如下圖所示,開發框架提供了多種應用程序狀態管理的能力。
    的頭像 發表于 04-10 09:38 ?821次閱讀
    <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 ?377次閱讀

    HarmonyOS Connect “Device Partner”專場FAQ來啦!

    HarmonyOS Connect生態,共同提升消費者的智慧生活體驗。 在接入HarmonyOS Connect生態的過程中,你是否對團隊管理帳號找回、產品委托、產品信息查詢等功能的
    的頭像 發表于 02-24 09:10 ?637次閱讀

    鴻蒙開發設備管理:ohos.account.appAccount 應用帳號管理

    應用帳號管理:獲取應用帳號模塊對象。
    的頭像 發表于 07-06 10:43 ?684次閱讀
    鴻蒙<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 ?259次閱讀
    鴻蒙<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 ?363次閱讀
    鴻蒙<b class='flag-5'>開發</b><b class='flag-5'>管理</b>:ohos.account.osAccount 系統<b class='flag-5'>帳號</b><b class='flag-5'>管理</b>
    主站蜘蛛池模板: 最新eeuss影院第256页| 最新版天堂中文在线官网| 激情五月深爱五月| 人与禽交免费网站视频| aaaaa国产毛片| 男女艹逼软件| 2020欧美极品hd18| 亚洲小说区图片区另类春色| www.夜夜骑| 欧美影欧美影院免费观看视频| www在线观看| 久青草免费视频手机在线观看| 久久综合久色欧美婷婷| 国产女人18毛片水真多18精品| 成人v片| 狠狠色丁香婷婷综合久久片| 黄色福利网| 都市激情亚洲| 丁香花在线影院观看在线播放| www你懂的| 99久久99久久久99精品齐| 午夜小视频男女在线观看| 九九热在线视频观看| japanese 69hdxxxx日本| 六月综合激情| 黄网站在线观看高清免费| 免费爱做网站在线看| 亚洲国产欧美视频| 香港三级理论在线影院| 日韩精品三级| 欧美性一级交视频| 人阁色第四影院在线观看| 国内外精品免费视频| 天天上天天操| 欧美性操| 亚洲青青草原| 久青草国产观看在线视频| 亚洲成网站www久久九| 在线看黄的网站| 一级日本高清视频免费观看| 午夜免费福利影院|