diff --git a/frameworks/ets/ani/ani_common/src/ets_application_context_utils.cpp b/frameworks/ets/ani/ani_common/src/ets_application_context_utils.cpp index 918e4811e9036aa1f26aa5aea3667b2f8f19e1ee..07a7d9aa142b87fca342693ba1c70a272354b637 100644 --- a/frameworks/ets/ani/ani_common/src/ets_application_context_utils.cpp +++ b/frameworks/ets/ani/ani_common/src/ets_application_context_utils.cpp @@ -961,6 +961,7 @@ ani_object EtsApplicationContextUtils::CreateEtsApplicationContext(ani_env* aniE } auto etsReference = std::make_shared(); etsReference->aniObj = applicationContextObject; + etsReference->aniRef = applicationContextObjectRef; ApplicationContextManager::GetApplicationContextManager().SetEtsGlobalObject(etsReference); BindApplicationContextFunc(aniEnv); ani_class applicationContextClass = nullptr; diff --git a/frameworks/ets/ani/ani_common/src/ets_context_utils.cpp b/frameworks/ets/ani/ani_common/src/ets_context_utils.cpp index 53f6f3228d178870736e1552dbe65a5f2222c8a1..ec1d79b27016bc6b95b401ede9ce0f88a032e82a 100644 --- a/frameworks/ets/ani/ani_common/src/ets_context_utils.cpp +++ b/frameworks/ets/ani/ani_common/src/ets_context_utils.cpp @@ -646,9 +646,9 @@ ani_object GetApplicationContextSync(ani_env *env, ani_object aniObj) } if (!applicationContext->GetApplicationInfoUpdateFlag()) { auto appContextObj = ApplicationContextManager::GetApplicationContextManager().GetEtsGlobalObject(); - if (appContextObj != nullptr) { - TAG_LOGE(AAFwkTag::APPKIT, "appContextObj is not nullptr"); - return appContextObj->aniObj; + if (appContextObj != nullptr && appContextObj->aniRef != nullptr) { + TAG_LOGD(AAFwkTag::APPKIT, "appContextObj is not nullptr"); + return reinterpret_cast(appContextObj->aniRef); } } return GetApplicationContext(env, applicationContext); diff --git a/frameworks/ets/ani/application/src/ets_application.cpp b/frameworks/ets/ani/application/src/ets_application.cpp index 7c09dc6fa34f279b71f2005fd2c5da44510aa09b..e395fac644c559d1ce5298015c53a513f8c0e94d 100644 --- a/frameworks/ets/ani/application/src/ets_application.cpp +++ b/frameworks/ets/ani/application/src/ets_application.cpp @@ -253,14 +253,14 @@ ani_object EtsApplication::GetApplicationContext(ani_env *env) } auto etsReference = AbilityRuntime::ApplicationContextManager::GetApplicationContextManager().GetEtsGlobalObject(); - if (etsReference == nullptr || etsReference->aniObj == nullptr) { + if (etsReference == nullptr || etsReference->aniRef == nullptr) { TAG_LOGE(AAFwkTag::APPKIT, "null applicationContextObject"); AbilityRuntime::EtsErrorUtil::ThrowError(env, AbilityRuntime::AbilityErrorCode::ERROR_CODE_INNER); ani_ref result = nullptr; env->GetNull(&result); return static_cast(result); } - return etsReference->aniObj; + return reinterpret_cast(etsReference->aniRef); } void ApplicationInit(ani_env *env)