diff --git a/frameworks/ets/ets/application/UIAbilityContext.ets b/frameworks/ets/ets/application/UIAbilityContext.ets index a30b144b5522580d146212f2f7a803eb4b23aa4c..4ecae560c363562edbc26b71e4604bb29f3b4b73 100644 --- a/frameworks/ets/ets/application/UIAbilityContext.ets +++ b/frameworks/ets/ets/application/UIAbilityContext.ets @@ -27,6 +27,7 @@ import { HapModuleInfo } from 'bundleManager.HapModuleInfo'; import AsyncCallbackWrapper from '../utils/AbilityUtils'; import OpenLinkOptions from '@ohos.app.ability.OpenLinkOptions'; import { LocalStorage } from '@ohos.arkui.stateManagement'; +import ConfigurationConstant from '@ohos.app.ability.ConfigurationConstant'; // remove local declaration after Any type is supported type Any = Object | null | undefined @@ -93,6 +94,7 @@ export default class UIAbilityContext extends Context { private native nativeMoveAbilityToBackground(callback: AsyncCallbackWrapper): void; private native nativeRequestModalUIExtension(pickerWant: Want, callback: AsyncCallbackWrapper): void; + private native nativeSetColorMode(colorMode: ConfigurationConstant.ColorMode): void; startAbility(want: Want, callback: AsyncCallback): void { let myCall = new AsyncCallbackWrapper(callback); @@ -369,4 +371,8 @@ export default class UIAbilityContext extends Context { }); }); } + + setColorMode(colorMode: ConfigurationConstant.ColorMode): void { + this.nativeSetColorMode(colorMode); + } } diff --git a/frameworks/native/ability/native/ability_runtime/sts_ability_context.cpp b/frameworks/native/ability/native/ability_runtime/sts_ability_context.cpp index 724f7d86fd044229ea89f032a78dc4a2fead2674..73557d3d8ec0b48a2f99760c040ecfcd7965e49d 100644 --- a/frameworks/native/ability/native/ability_runtime/sts_ability_context.cpp +++ b/frameworks/native/ability/native/ability_runtime/sts_ability_context.cpp @@ -686,6 +686,28 @@ void StsAbilityContext::NativeRequestModalUIExtension(ani_env *env, ani_object a AppExecFwk::AsyncCallback(env, callbackObj, errorObject, nullptr); } +void StsAbilityContext::SetColorMode(ani_env *env, ani_object aniObj, ani_enum_item colorMode) +{ + TAG_LOGD(AAFwkTag::UIABILITY, "SetColorMode Call"); + if (env == nullptr) { + TAG_LOGE(AAFwkTag::UIABILITY, "null env"); + return; + } + auto context = StsAbilityContext::GetAbilityContext(env, aniObj); + if (context == nullptr) { + TAG_LOGE(AAFwkTag::CONTEXT, "context is already released"); + ThrowStsError(env, AbilityErrorCode::ERROR_CODE_INVALID_CONTEXT); + return; + } + ani_int mode = 0; + if (!AAFwk::AniEnumConvertUtil::EnumConvertStsToNative(env, colorMode, mode)) { + TAG_LOGE(AAFwkTag::UIABILITY, "Parse colorMode failed"); + ThrowStsInvalidParamError(env, "Parse param colorMode failed, colorMode must be number."); + return; + } + TAG_LOGD(AAFwkTag::UIABILITY, "colorMode is %{public}d", mode); + context->SetAbilityColorMode(static_cast(mode)); +} ani_object StsAbilityContext::NativeTransferStatic(ani_env *env, ani_object, ani_object input) { TAG_LOGD(AAFwkTag::UIABILITY, "transfer static UIAbilityContext"); @@ -814,6 +836,9 @@ bool BindNativeMethods(ani_env *env, ani_class &cls) reinterpret_cast(StsAbilityContext::NativeMoveAbilityToBackground) }, ani_native_function { "nativeRequestModalUIExtension", nullptr, reinterpret_cast(StsAbilityContext::NativeRequestModalUIExtension) }, + ani_native_function {"nativeSetColorMode", + "L@ohos/app/ability/ConfigurationConstant/ConfigurationConstant/ColorMode;:V", + reinterpret_cast(StsAbilityContext::SetColorMode)}, ani_native_function { "nativeTransferStatic", "Lstd/interop/ESValue;:Lstd/core/Object;", reinterpret_cast(StsAbilityContext::NativeTransferStatic) }, ani_native_function { "nativeTransferDynamic", "Lstd/core/Object;:Lstd/interop/ESValue;", diff --git a/interfaces/kits/native/ability/native/ability_runtime/sts_ability_context.h b/interfaces/kits/native/ability/native/ability_runtime/sts_ability_context.h index b174b1cfa603c29dc9194e01fa78b035c52f7cbd..affb3fed16ea97b2847108debb52ed86c95c2e7f 100644 --- a/interfaces/kits/native/ability/native/ability_runtime/sts_ability_context.h +++ b/interfaces/kits/native/ability/native/ability_runtime/sts_ability_context.h @@ -67,6 +67,7 @@ public: static void NativeMoveAbilityToBackground(ani_env *env, ani_object aniObj, ani_object callBack); static void NativeRequestModalUIExtension(ani_env *env, ani_object aniObj, ani_string pickerWantObj, ani_object callBackObj); + static void SetColorMode(ani_env *env, ani_object aniObj, ani_enum_item colorMode); static ani_object NativeTransferStatic(ani_env *env, ani_object aniObj, ani_object input); static ani_object NativeTransferDynamic(ani_env *env, ani_object aniObj, ani_object input);