diff --git a/adapter/ohos/entrance/ace_container.cpp b/adapter/ohos/entrance/ace_container.cpp index 5d894954fa8fc54c565c3f8488427a5ffab0cfa5..5718977a7139d5d2bd573046317e00a2ea354707 100644 --- a/adapter/ohos/entrance/ace_container.cpp +++ b/adapter/ohos/entrance/ace_container.cpp @@ -2857,6 +2857,10 @@ void AceContainer::AttachView(std::shared_ptr window, const RefPtrAttachPipelineContext(pipelineContext_); + if ((type_ == FrontendType::STATIC_HYBRID_DYNAMIC || type_ == FrontendType::DYNAMIC_HYBRID_STATIC) && + subFrontend_) { + subFrontend_->AttachPipelineContext(pipelineContext_); + } } else if (frontend_->GetType() == FrontendType::DECLARATIVE_JS) { if (declarativeFrontend) { declarativeFrontend->AttachSubPipelineContext(pipelineContext_); diff --git a/frameworks/bridge/arkts_frontend/arkts_frontend.cpp b/frameworks/bridge/arkts_frontend/arkts_frontend.cpp index 7b68aaf090c407155c81f9261faf6cbae5daed0c..a60b38fb5f0522a193c8204351cd52d6ff3f7df1 100644 --- a/frameworks/bridge/arkts_frontend/arkts_frontend.cpp +++ b/frameworks/bridge/arkts_frontend/arkts_frontend.cpp @@ -492,6 +492,19 @@ void ArktsFrontend::OpenStateMgmtInterop() return; } +napi_value ArktsFrontend::GetContextValue() +{ + auto container = Container::Current(); + CHECK_NULL_RETURN(container, nullptr); + auto type = container->GetFrontendType(); + if (type == FrontendType::STATIC_HYBRID_DYNAMIC && container->GetSubFrontend()) { + // support 1.1 call getUIContext when STATIC_HYBRID_DYNAMIC + return container->GetSubFrontend()->GetContextValue(); + } else { + return nullptr; // Default behavior + } +} + bool ArktsFrontend::HandleMessage(void *frameNode, int32_t type, const std::string& param) { auto* env = ArktsAniUtils::GetAniEnv(vm_); diff --git a/frameworks/bridge/arkts_frontend/arkts_frontend.h b/frameworks/bridge/arkts_frontend/arkts_frontend.h index a51306ec7a09dc1e9ac161fd7d13f15b03d76583..4d32e73a9ec9be1af5d7c43a60b71ebf7ade70ca 100644 --- a/frameworks/bridge/arkts_frontend/arkts_frontend.h +++ b/frameworks/bridge/arkts_frontend/arkts_frontend.h @@ -266,6 +266,7 @@ public: void RebuildAllPages() override {} void NotifyAppStorage(const std::string& key, const std::string& value) override {} bool HandleMessage(void* frameNode, int32_t type, const std::string& param) override; + napi_value GetContextValue() override; RefPtr GetEventHandler() override {