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 dbb20f3ccde271b777fd35a2fadde2d1e7663a65..cd369f66bd50e50026d5a497af206112c94aa335 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 e2ec85808780a5a05ec8026a0be5ade28d38bdf1..c8a206c143fada79a583c0ff858506a01cb2fd59 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);