美文网首页
鸿蒙开发 数据持久化,卸载应用,数据依然存在

鸿蒙开发 数据持久化,卸载应用,数据依然存在

作者: 移动的键盘 | 来源:发表于2024-07-17 15:03 被阅读0次

HarmonyOS NEXT api12
@ohos.security.asset (关键资产存储服务)


import { asset } from '@kit.AssetStoreKit';
import { buffer } from '@kit.ArkTS';
import { BusinessError } from '@kit.BasicServicesKit';
import { YXUniversalTool } from "../YXUniversalTool";

export class YXAssetStore {

  public static strToUint8Array(src: string, encoding: buffer.BufferEncoding = 'utf-8'): Uint8Array {
    return YXUniversalTool.strToUint8Array(src,encoding);
  }

  public static unit8ArrayToStr(src: Uint8Array, encoding: buffer.BufferEncoding = 'utf-8'): string {
    return YXUniversalTool.unit8ArrayToStr(src,encoding);
  }

  static setSync(key: string, value: string) {

    let attr: asset.AssetMap = new Map();
    attr.set(asset.Tag.ALIAS, YXAssetStore.strToUint8Array(key));
    attr.set(asset.Tag.SECRET, YXAssetStore.strToUint8Array(value));
    attr.set(asset.Tag.ACCESSIBILITY,asset.Accessibility.DEVICE_POWERED_ON);
    attr.set(asset.Tag.REQUIRE_PASSWORD_SET,false);
    attr.set(asset.Tag.AUTH_TYPE,asset.AuthType.NONE);
    attr.set(asset.Tag.SYNC_TYPE, asset.SyncType.THIS_DEVICE);
    attr.set(asset.Tag.IS_PERSISTENT,true);
    attr.set(asset.Tag.CONFLICT_RESOLUTION, asset.ConflictResolution.OVERWRITE);
    try {
      asset.addSync(attr);
    } catch (err) {
      let error = err as BusinessError;
      console.log(`AssetStore-set-异常 ~ code: ${error.code} -·- message: ${error.message}`);
    }
  }

  static getSync(key: string): string {

    let attr: asset.AssetMap = new Map();
    attr.set(asset.Tag.ALIAS, YXAssetStore.strToUint8Array(key));
    attr.set(asset.Tag.RETURN_TYPE, asset.ReturnType.ALL);
    attr.set(asset.Tag.ACCESSIBILITY,asset.Accessibility.DEVICE_POWERED_ON);
    attr.set(asset.Tag.REQUIRE_PASSWORD_SET,false);
    attr.set(asset.Tag.AUTH_TYPE,asset.AuthType.NONE);

    try {
      let res = asset.querySync(attr);
      if (res.length == 0) {
        return "";
      }

      let map: asset.AssetMap = res[0];
      let arr = map.get(asset.Tag.SECRET) as Uint8Array;
      if (arr) {
        let value = YXAssetStore.unit8ArrayToStr(arr);
        return value;
      }
    } catch (err) {
      let error = err as BusinessError;
      console.log(`AssetStore-set-异常 ~ code: ${error.code} -·- message: ${error.message}`);
    }
    return "";
  }

  static removeSync(key: string) {

    let attr: asset.AssetMap = new Map();
    attr.set(asset.Tag.ALIAS, YXAssetStore.strToUint8Array(key));

    try {
      asset.removeSync(attr);
    } catch (err) {
      let error = err as BusinessError;
      console.log(`AssetStore-set-异常 ~ code: ${error.code} -·- message: ${error.message}`);
    }
  }
}

相关文章

  • iOS 开发技术选型之数据库:SQLite vs. Core D

    持久化方案 在 iOS 开发中,数据持久化存储是一个很常见的需求。所谓持久化存储,就是将数据存到硬盘,使得应用重启...

  • iOS 数据持久化 (数据存储)

    数据持久化,就是将数据保存在硬盘中;当应用程序结束或者机器重启后,依然能使用之前保存的数据。在iOS上的数据存储,...

  • iOS数据持久化(数据存储)

    数据持久化,就是将数据保存在硬盘中;当应用程序结束或者机器重启后,依然能使用之前保存的数据。在iOS上的数据存储,...

  • iOS数据存储

    iOS数据存储 持久化存储 概述: 持久化存储——将数据保存在硬盘里,当应用程序重启后可以访问到之前存储的数据。是...

  • GeekBand iOS开发高级进阶学习笔记(第四周)

    简易数据存储 数据持久化分为本体持久化和云端持久化本体持久化可以存在本地文件或数据库。云端可以存在iCloud,存...

  • 一文搞懂android内部存储和外部存储

    我们在开发Android应用的过程中,避免不了要用到数据持久化技术,所谓的数据持久化就是将RAM中的瞬时数据保存到...

  • swift3.0 之Core Data

    Core Data 是苹果为OS X 和iOS系统应用开发提供的数据持久化技术。它基于高级数据持久化的API,它的...

  • iOS 数据持久化存储

    前言 在iOS开发中,所谓的数据持久化存储,就是将数据保存在硬盘中,这样即使我们的应用关闭后重启,仍然是可以继续访...

  • iOS数据持久化小结(上)

    首先谈一下自己对iOS中数据持久化这个概念的理解。所谓的数据持久化就是将数据保存在本地硬盘中,这样即使我们的应用退...

  • Android数据持久化之数据库的使用

    android开发中数据持久化 轻量级数据持久化一般使用sp,大量数据的持久化就必须考虑使用本地数据库了 Andr...

网友评论

      本文标题:鸿蒙开发 数据持久化,卸载应用,数据依然存在

      本文链接:https://www.haomeiwen.com/subject/kyvlhjtx.html