HarmonyOS 鸿蒙Next中元服务卡片获取应用preference

HarmonyOS 鸿蒙Next中元服务卡片获取应用preference 元服务卡片如何获取应用的preference,并且需要和UIAbility的preference保持状态一致

3 回复

当前元服务卡片只能访问元服务的首选项,无法访问应用的preference。

元服务首选项可参考如下链接: https://developer.huawei.com/consumer/cn/doc/atomic-guides-V5/atomic-data-persistence-by-preferences-V5

元服务和服务卡片可以通过用户首选项(Preferences)来共享数据,双方指定使用相同的Preferences实例的名称。但是需要注意的是,应用首次调用getPreferences接口获取某个Preferences实例后,该实例会被会被缓存起来,后续再次getPreferences时不会再次从持久化文件中读取,直接从缓存中获取Preferences实例;所以多个进程持有同一个首选项文件时,需要订阅进程间数据变更事件,在on(‘multiProcessChange’)回调方法中调用removePreferencesFromCache从缓存中移出指定的Preferences实例,然后再重新获取Preferences实例。

Preferences的详细使用参考:https://developer.huawei.com/consumer/cn/doc/atomic-guides-V5/atomic-data-persistence-by-preferences-V5

示例代码:

import dataPreferences from '@ohos.data.preferences';
import common from '@ohos.app.ability.common';

let context: common.BaseContext;
let preferences: dataPreferences.Preferences | null = null;

let options: dataPreferences.Options = { name: 'myStore' };

export function getValue(key: string): string {
  if (preferences === null) {
    preferences = dataPreferences.getPreferencesSync(context, options);
  }
  return preferences.getSync(key, '') as string
}

export function initPreferenceTool(paramContext: common.Context) {
  context = paramContext
  let observer = (key: string) => {
    console.info("The key " + key + " changed.");
    dataPreferences.removePreferencesFromCacheSync(context, options);
    preferences = null
  }
  if (preferences === null) {
    preferences = dataPreferences.getPreferencesSync(context, options);
  }
  preferences.on('multiProcessChange', observer);
}

更多关于HarmonyOS 鸿蒙Next中元服务卡片获取应用preference的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)的Next版本中,元服务卡片(Meta Service Card)是用于展示应用关键信息的小组件。要获取应用的preference(偏好设置),可以通过Preferences模块来实现。Preferences是鸿蒙系统中用于存储轻量级数据的键值对存储方式。

首先,确保在config.json文件中声明了ohos.permission.DISTRIBUTED_DATASYNC权限,以便访问分布式数据。接着,使用PreferencesgetPreferences方法获取指定文件的Preferences实例。通过get方法可以获取具体的偏好设置值。

示例代码如下:

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

// 获取Preferences实例
const PREFERENCES_NAME = 'myPrefs';
preferences.getPreferences(this.context, PREFERENCES_NAME)
  .then((pref) => {
    // 获取偏好设置值
    const value = pref.get('key', 'defaultValue');
    console.info(`获取到的偏好设置值为: ${value}`);
  })
  .catch((err) => {
    console.error(`获取偏好设置失败: ${err}`);
  });

在上述代码中,this.context是当前组件的上下文,PREFERENCES_NAME是偏好设置文件的名称,key是要获取的偏好设置的键,defaultValue是当键不存在时返回的默认值。

通过这种方式,可以在元服务卡片中获取并展示应用的偏好设置信息。

在HarmonyOS(鸿蒙Next)中,元服务卡片可以通过ohos.data.preferences模块来获取应用的偏好设置数据。具体步骤如下:

  1. 创建Preferences实例:使用Preferences.getPreferences(context, name)方法获取Preferences实例。
  2. 读取数据:通过Preferences.get()方法读取存储的偏好数据。
  3. 监听数据变化:可以通过Preferences.registerObserver()方法监听偏好数据的变化。

通过这些步骤,元服务卡片可以动态获取并显示应用的偏好设置数据,提升用户体验。

回到顶部