From 5ab4c5831f83678b8c8294130561adaba6c67650 Mon Sep 17 00:00:00 2001 From: zhangzezhong Date: Sat, 31 May 2025 17:20:54 +0800 Subject: [PATCH] fix applicationContext obtain context field Signed-off-by: zhangzezhong --- .../context/sts_context_utils.cpp | 16 ++++++---------- .../ability_runtime/context/sts_context_utils.h | 2 +- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/frameworks/native/appkit/ability_runtime/context/sts_context_utils.cpp b/frameworks/native/appkit/ability_runtime/context/sts_context_utils.cpp index dbb20f3ccde..cd369f66bd5 100644 --- a/frameworks/native/appkit/ability_runtime/context/sts_context_utils.cpp +++ b/frameworks/native/appkit/ability_runtime/context/sts_context_utils.cpp @@ -28,19 +28,15 @@ namespace OHOS { namespace AbilityRuntime { namespace ContextUtil { void BindApplicationCtx(ani_env* aniEnv, ani_class contextClass, ani_object contextObj, - void* applicationCtxRef) + void* applicationCtxRef, std::shared_ptr context) { // bind parent context field:applicationContext - ani_field applicationContextField; - if (aniEnv->Class_FindField(contextClass, "applicationContext", &applicationContextField) != ANI_OK) { - TAG_LOGE(AAFwkTag::APPKIT, "Class_FindField failed"); - return; - } - ani_ref applicationContextRef = reinterpret_cast(applicationCtxRef); - if (aniEnv->Object_SetField_Ref(contextObj, applicationContextField, applicationContextRef) != ANI_OK) { - TAG_LOGE(AAFwkTag::APPKIT, "Object_SetField_Ref failed"); + if (applicationCtxRef == nullptr) { + TAG_LOGE(AAFwkTag::APPKIT, "applicationCtxRef is nullptr"); return; } + + BindParentProperty(aniEnv, contextClass, static_cast(applicationCtxRef), context); } void BindApplicationInfo(ani_env* aniEnv, ani_class contextClass, ani_object contextObj, @@ -129,8 +125,8 @@ void BindParentProperty(ani_env* aniEnv, ani_class contextClass, ani_object cont void StsCreatContext(ani_env* aniEnv, ani_class contextClass, ani_object contextObj, void* applicationCtxRef, std::shared_ptr context) { - BindApplicationCtx(aniEnv, contextClass, contextObj, applicationCtxRef); BindParentProperty(aniEnv, contextClass, contextObj, context); + BindApplicationCtx(aniEnv, contextClass, contextObj, applicationCtxRef, context); } ani_object GetApplicationContextSync([[maybe_unused]]ani_env *env, [[maybe_unused]]ani_object aniObj) diff --git a/interfaces/kits/native/appkit/ability_runtime/context/sts_context_utils.h b/interfaces/kits/native/appkit/ability_runtime/context/sts_context_utils.h index e2ec8580878..c8a206c143f 100644 --- a/interfaces/kits/native/appkit/ability_runtime/context/sts_context_utils.h +++ b/interfaces/kits/native/appkit/ability_runtime/context/sts_context_utils.h @@ -23,7 +23,7 @@ namespace OHOS { namespace AbilityRuntime { namespace ContextUtil { void BindApplicationCtx(ani_env* aniEnv, ani_class contextClass, ani_object contextObj, - void* applicationCtxRef); + void* applicationCtxRef, std::shared_ptr context); void SetArea([[maybe_unused]]ani_env *env, [[maybe_unused]]ani_object aniObj, ani_int value); -- Gitee