HarmonyOS 鸿蒙Next Preferences错误,请问这是什么原因,如何修改

发布于 1周前 作者 itying888 来自 鸿蒙OS

HarmonyOS 鸿蒙Next Preferences错误,请问这是什么原因,如何修改

import dataPreferences from ‘@ohos.data.preferences’;

import Constants from ‘…/constants/Constants’;

import { Logger } from ‘./Logger’;

export default class PreferenceModel {

private context: Context = getContext(this)

private preference: dataPreferences.Preferences | null = null

private static instance = new PreferenceModel()

public static getInstance(): PreferenceModel { return PreferenceModel.instance }

private constructor() { Logger.info(JSON.stringify(this.context)) this.getPreferencesFromStorage() }

getPreferencesFromStorage() { try { this.preference = dataPreferences.getPreferencesSync(this.context, Constants.PREFERENCES_NAME); } catch (err) { Logger.error(Failed to get preferences, Cause: + JSON.stringify(err)); } }

save(key: string, value: string) { try { this.preference?.putSync(key, value); } catch (err) { Logger.error(Failed to put value, Cause: ${err}); } this.preference?.flush(); }

get(key: string): string { let value = ‘’; try { let value = this.preference?.getSync(key, ‘’) return value == undefined ? ‘’ : value.toString() } catch (err) { Logger.error(Failed to get value, Cause: + JSON.stringify(err)); } return value; } }

这是我的一个代码,在执行时报以下错误: 05-04 15:25:43.813 2078…46922 C03f00/ArkCompiler [ArkRuntime Log] Error: Capability not supported 05-04 15:25:43.813 2078…46922 C03f00/ArkCompiler [ArkRuntime Log] at getPreferencesFromStorage (entry/src/main/ets/utils/PreferenceModel.ets:23:31) 05-04 15:25:43.813 2078…46922 C03f00/ArkCompiler [ArkRuntime Log] at PreferenceModel (entry/src/main/ets/utils/PreferenceModel.ets:19:9) 05-04 15:25:43.813 2078…46922 C03f00/ArkCompiler [ArkRuntime Log] at static_initializer (entry/src/main/ets/utils/PreferenceModel.ets:13:31) 05-04 15:25:43.813 2078…46922 C03f00/ArkCompiler [ArkRuntime Log] at func_main_0 (entry/src/main/ets/utils/PreferenceModel.ets:9:38) 05-04 15:25:43.813 2078…46922 A01010/MobileBank Failed to get preferences, Cause:{“code”:“801”} 有人遇到过吗?


更多关于HarmonyOS 鸿蒙Next Preferences错误,请问这是什么原因,如何修改的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

使用您提供的代码在本地真机测试,未出现您说的报错,能提供更详细的demo么?

本地测试代码:

import dataPreferences from '@ohos.data.preferences';

export default class PreferenceModel {
  private context: Context = getContext(this)
  private preference: dataPreferences.Preferences | null = null
  private static instance = new PreferenceModel()

  public static getInstance(): PreferenceModel {
    return PreferenceModel.instance
  }

  private constructor() {
    this.getPreferencesFromStorage()
  }

  getPreferencesFromStorage() {
    try {
      let options: dataPreferences.Options = {
        name: 'myStore'
      };
      this.preference = dataPreferences.getPreferencesSync(this.context, options);
    } catch (err) {
      console.log(`reulst zj ==> ${JSON.stringify(err)}`);
    }
  }

  save(key: string, value: string) {
    try {
      this.preference?.putSync(key, value);
    } catch (err) {
      console.log(`reulst zj ==> ${JSON.stringify(err)}`);
    }
    this.preference?.flush();
  }

  get(key: string): string {
    let value = '';
    try {
      let value = this.preference?.getSync(key, '')
      return value == undefined ? '' : value.toString()
    } catch (err) {
      console.log(`reulst zj ==> ${JSON.stringify(err)}`);
    }
    return value;
  }
}

// 2.页面使用
import PreferenceModel from './Model'

@Entry
@Component
struct Test {
  aboutToAppear(): void {
    PreferenceModel.getInstance().save('testStore', '11111111')
  }

  build() {
    Column() {
      Button('test').onClick(() => {
        console.log(`reulst zj ==> ${JSON.stringify(PreferenceModel.getInstance().get('testStore'))}`);
      })
    }.width('100%')
  }
}

针对您的报错信息,可能是设备不支持此API。

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/errorcode-universal-V13

Preview不支持首选项,建议使用真机测试。

若有真机的情况下,Preferences还是建议使用真机调试

没有真机的情况下,模拟器也是可以调试的

更多关于HarmonyOS 鸿蒙Next Preferences错误,请问这是什么原因,如何修改的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS 鸿蒙Next Preferences错误可能源于多个方面,包括但不限于配置文件错误、API使用不当或系统兼容性问题。以下是一些可能的解决方向:

  1. 检查配置文件:

    • 确保config.xml或相关配置文件中的设置正确无误,特别是与Preferences相关的部分。
    • 核对键名、值类型是否与预期一致,避免拼写错误或格式错误。
  2. API使用检查:

    • 验证代码中Preferences API的调用方式是否符合HarmonyOS的规范。
    • 检查是否使用了已废弃或不支持的API。
  3. 系统兼容性:

    • 确认当前的开发环境(如SDK版本)与目标设备或模拟器的系统版本是否兼容。
    • 如有必要,尝试更新SDK或回退到较稳定的版本。
  4. 清理与重建:

    • 清理项目并重新构建,确保所有资源文件和代码都是最新的。
    • 重启开发环境,有时可以解决一些不明原因的错误。

如果上述方法仍未能解决问题,可能是更深层次的系统或框架问题。此时,建议直接联系HarmonyOS的官方技术支持。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部