HarmonyOS 鸿蒙Next Preferences错误,请问这是什么原因,如何修改
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
使用您提供的代码在本地真机测试,未出现您说的报错,能提供更详细的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使用不当或系统兼容性问题。以下是一些可能的解决方向:
-
检查配置文件:
- 确保
config.xml
或相关配置文件中的设置正确无误,特别是与Preferences相关的部分。 - 核对键名、值类型是否与预期一致,避免拼写错误或格式错误。
- 确保
-
API使用检查:
- 验证代码中Preferences API的调用方式是否符合HarmonyOS的规范。
- 检查是否使用了已废弃或不支持的API。
-
系统兼容性:
- 确认当前的开发环境(如SDK版本)与目标设备或模拟器的系统版本是否兼容。
- 如有必要,尝试更新SDK或回退到较稳定的版本。
-
清理与重建:
- 清理项目并重新构建,确保所有资源文件和代码都是最新的。
- 重启开发环境,有时可以解决一些不明原因的错误。
如果上述方法仍未能解决问题,可能是更深层次的系统或框架问题。此时,建议直接联系HarmonyOS的官方技术支持。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html,