!152 merge setting0531 into master

添加setSetting方法

Created-by: xuqinfeng1
Commit-by: xuqinfeng1
Merged-by: openharmony_ci
Description: ### 一、内容说明(相关的Issue)
https://gitcode.com/openharmony/arkui_ui_appearance/issues/165


### 二、建议测试周期和提测地址  
  建议测试完成时间:xxxx.xx.xx  
  投产上线时间:xxxx.xx.xx  
  提测地址:CI环境/压测环境  
  测试账号:  

### 三、变更内容
  * 3.1 关联PR列表

  * 3.2 数据库和部署说明  
    1. 常规更新 
    2. 重启unicorn
    3. 重启sidekiq
    4. 迁移任务:是否有迁移任务,没有写 "无"
    5. rake脚本:`bundle exec xxx RAILS_ENV = production`;没有写 "无"

  * 3.4 其他技术优化内容(做了什么,变更了什么)
    - 重构了 xxxx 代码
    - xxxx 算法优化


  * 3.5 废弃通知(什么字段、方法弃用?)



  * 3.6  后向不兼容变更(是否有无法向后兼容的变更?)


  
### 四、研发自测点(自测哪些?冒烟用例全部自测?)
  自测测试结论:


### 五、测试关注点(需要提醒QA重点关注的、可能会忽略的地方)
  检查点:

| 需求名称 | 是否影响xx公共模块 | 是否需要xx功能 | 需求升级是否依赖其他子产品 |
|------|------------|----------|---------------|
| xxx  | 否          | 需要       | 不需要           |
|      |            |          |               |

  接口测试:

  性能测试:

  并发测试:

  其他:



See merge request: openharmony/arkui_ui_appearance!152
This commit is contained in:
openharmony_ci
2026-06-05 09:17:21 +08:00
8 changed files with 60 additions and 2 deletions
@@ -18,6 +18,7 @@
#include <cstdint>
#include <functional>
#include <string>
#include "ui_appearance_types.h"
@@ -28,13 +29,16 @@ class __attribute__((visibility("default"))) UIAppearance {
public:
static UiAppearanceAbilityErrCode SetDarkMode(DarkMode mode);
static UiAppearanceAbilityErrCode GetDarkMode(DarkMode& mode);
static UiAppearanceAbilityErrCode SetSettingData(std::string key, std::string value);
private:
using SetDarkModeFunc = std::function<UiAppearanceAbilityErrCode(DarkMode)>;
using GetDarkModeFunc = std::function<UiAppearanceAbilityErrCode(DarkMode&)>;
using SetSettingDataFunc = std::function<UiAppearanceAbilityErrCode(std::string, std::string)>;
static SetDarkModeFunc setDarkModeFunc_;
static GetDarkModeFunc getDarkModeFunc_;
static SetSettingDataFunc setSettingDataFunc_;
};
} // namespace UiAppearance
} // namespace ArkUi
+17 -2
View File
@@ -27,14 +27,18 @@ UIAppearance::SetDarkModeFunc UIAppearance::setDarkModeFunc_ = [](DarkMode mode)
UIAppearance::GetDarkModeFunc UIAppearance::getDarkModeFunc_ = [](DarkMode& mode) {
int32_t result = UiAppearanceAbilityClient::GetInstance()->GetDarkMode();
if (result == static_cast<int32_t>(DarkMode::ALWAYS_DARK) ||
result == static_cast<int32_t>(DarkMode::ALWAYS_LIGHT) ||
result == static_cast<int32_t>(DarkMode::UNKNOWN)) {
result == static_cast<int32_t>(DarkMode::ALWAYS_LIGHT) || result == static_cast<int32_t>(DarkMode::UNKNOWN)) {
mode = static_cast<DarkMode>(result);
return UiAppearanceAbilityErrCode::SUCCEEDED;
}
return static_cast<UiAppearanceAbilityErrCode>(result);
};
UIAppearance::SetSettingDataFunc UIAppearance::setSettingDataFunc_ = [](std::string key, std::string value) {
return static_cast<UiAppearanceAbilityErrCode>(
UiAppearanceAbilityClient::GetInstance()->SetSettingData(key, value));
};
UiAppearanceAbilityErrCode UIAppearance::SetDarkMode(DarkMode mode)
{
return setDarkModeFunc_(mode);
@@ -44,6 +48,17 @@ UiAppearanceAbilityErrCode UIAppearance::GetDarkMode(DarkMode& mode)
{
return getDarkModeFunc_(mode);
}
UiAppearanceAbilityErrCode UIAppearance::SetSettingData(std::string key, std::string value)
{
return setSettingDataFunc_(key, value);
}
extern "C" __attribute__((visibility("default"))) int32_t OH_UIAppearance_SetSettingDate(
const char* key, const char* value)
{
return UIAppearance::SetSettingData(std::string(key), std::string(value));
}
} // namespace UiAppearance
} // namespace ArkUi
} // namespace OHOS
+1
View File
@@ -132,6 +132,7 @@ ohos_shared_library("ui_appearance_client") {
"ipc:ipc_single",
"safwk:system_ability_fwk",
"samgr:samgr_proxy",
"access_token:libtokenid_sdk"
]
cflags_cc = [
+1
View File
@@ -20,4 +20,5 @@ interface OHOS.ArkUi.UiAppearance.IUiAppearanceAbility {
int SetFontScale([in] String fontScale);
int GetFontWeightScale([out] String fontWeightScale);
int SetFontWeightScale([in] String fontWeightScale);
int SetSettingData([in] String key, [in] String value);
}
+2
View File
@@ -63,6 +63,7 @@ public:
ErrCode SetFontScale(const std::string& fontScale, int32_t& funcResult) override;
ErrCode GetFontWeightScale(std::string& fontWeightScale, int32_t& funcResult) override;
ErrCode SetFontWeightScale(const std::string& fontWeightScale, int32_t& funcResult) override;
ErrCode SetSettingData(const std::string& key, const std::string& value, int32_t& funcResult) override;
protected:
void OnStart() override;
@@ -110,6 +111,7 @@ private:
std::atomic<bool> isInitializationFinished_ = false;
std::set<int32_t> userSwitchUpdateConfigurationOnceFlag_;
std::mutex userSwitchUpdateConfigurationOnceFlagMutex_;
std::mutex settingMutex_;
};
} // namespace ArkUi::UiAppearance
} // namespace OHOS
@@ -43,6 +43,7 @@ public:
int32_t SetFontScale(std::string& fontScale);
int32_t GetFontWeightScale(std::string& fontWeightScale);
int32_t SetFontWeightScale(std::string& fontWeightScale);
int32_t SetSettingData(std::string key, std::string value);
void OnRemoteSaDied(const wptr<IRemoteObject>& object);
private:
+12
View File
@@ -34,6 +34,7 @@
#include "background_app_color_switch_settings.h"
#include "background_app_info.h"
#include "configuration_policy.h"
#include "setting_data_manager.h"
namespace {
static const std::string LIGHT = "light";
@@ -781,6 +782,17 @@ ErrCode UiAppearanceAbility::GetFontWeightScale(std::string& fontWeightScale, in
return SUCCEEDED;
}
ErrCode UiAppearanceAbility::SetSettingData(const std::string& key, const std::string& value, int32_t& funcResult)
{
SettingDataManager& manager = SettingDataManager::GetInstance();
std::lock_guard lock(settingMutex_);
manager.SetStringValue(key, value, GetCallingUserId());
LOGD("set setting data key:%{public}s value:%{public}s", key.c_str(), value.c_str());
funcResult = SUCCEEDED;
return SUCCEEDED;
}
void UiAppearanceAbility::UpdateSmartGestureModeCallback(bool isAutoMode, int32_t userId)
{
bool ret = false;
@@ -22,6 +22,8 @@
#include "ui_appearance_log.h"
#include "xcollie/xcollie.h"
#include "xcollie/xcollie_define.h"
#include "ipc_skeleton.h"
#include "tokenid_kit.h"
namespace OHOS {
namespace ArkUi::UiAppearance {
@@ -133,6 +135,26 @@ int32_t UiAppearanceAbilityClient::GetFontWeightScale(std::string &fontWeightSca
return funcRes;
}
int32_t UiAppearanceAbilityClient::SetSettingData(std::string key, std::string value)
{
if (!GetUiAppearanceServiceProxy()) {
LOGE("SetSettingData quit because redoing CreateUiAppearanceServiceProxy failed.");
return UiAppearanceAbilityErrCode::SYS_ERR;
}
auto selfToken = IPCSkeleton::GetSelfTokenID();
if (!Security::AccessToken::TokenIdKit::IsSystemAppByFullTokenID(selfToken)) {
LOGE("SetSettingData quit because caller is not system app.");
return UiAppearanceAbilityErrCode::NOT_SYSTEM_APP;
}
int32_t funcRes = -1;
auto res = GetUiAppearanceServiceProxy()->SetSettingData(key, value, funcRes);
if (res != ERR_OK) {
return UiAppearanceAbilityErrCode::SYS_ERR;
}
return funcRes;
}
sptr<IUiAppearanceAbility> UiAppearanceAbilityClient::CreateUiAppearanceServiceProxy()
{
sptr<ISystemAbilityManager> systemAbilityManager =