From 0ebb79ba948911eac4c1d581f8aaafb661bd91a8 Mon Sep 17 00:00:00 2001 From: RuiChen_01 Date: Thu, 9 Oct 2025 15:40:30 +0800 Subject: [PATCH] fix ui_extension Signed-off-by: RuiChen_01 --- .../ui_extension_ability/ui_extension.cpp | 43 +++++++++++-------- .../js_ui_extension_base.cpp | 43 +++++++++++-------- 2 files changed, 48 insertions(+), 38 deletions(-) diff --git a/frameworks/native/ability/native/ui_extension_ability/ui_extension.cpp b/frameworks/native/ability/native/ui_extension_ability/ui_extension.cpp index 13fc93d7c0..8a0f6fd44a 100755 --- a/frameworks/native/ability/native/ui_extension_ability/ui_extension.cpp +++ b/frameworks/native/ability/native/ui_extension_ability/ui_extension.cpp @@ -224,30 +224,35 @@ void UIExtension::OnInsightIntentExecuteDone(const sptr &ses if (res != uiWindowMap_.end() && res->second != nullptr) { WantParams params; params.SetParam(INSIGHT_INTENT_EXECUTE_RESULT_CODE, AAFwk::Integer::Box(result.innerErr)); - WantParams resultParams; - resultParams.SetParam("code", AAFwk::Integer::Box(result.code)); - if (result.result != nullptr) { + + Rosen::WMError ret = Rosen::WMError::WM_OK; + if (result.isDecorator && result.result) { sptr pWantParams = WantParamWrapper::Box(*result.result); - if (pWantParams != nullptr) { + params.SetParam(INSIGHT_INTENT_EXECUTE_RESULT, pWantParams); + ret = res->second->TransferExtensionData(params); + } else { + WantParams resultParams; + resultParams.SetParam("code", AAFwk::Integer::Box(result.code)); + if (result.result != nullptr) { + sptr pWantParams = WantParamWrapper::Box(*result.result); resultParams.SetParam("result", pWantParams); } - } - auto size = result.uris.size(); - sptr uriArray = new (std::nothrow) Array(size, g_IID_IString); - if (uriArray == nullptr) { - TAG_LOGE(AAFwkTag::UI_EXT, "new uriArray failed"); - return; - } - for (std::size_t i = 0; i < size; i++) { - uriArray->Set(i, String::Box(result.uris[i])); - } - resultParams.SetParam("uris", uriArray); - resultParams.SetParam("flags", AAFwk::Integer::Box(result.flags)); - sptr pWantParams = WantParamWrapper::Box(resultParams); - if (pWantParams != nullptr) { + auto size = result.uris.size(); + sptr uriArray = new (std::nothrow) Array(size, g_IID_IString); + if (uriArray == nullptr) { + TAG_LOGE(AAFwkTag::UI_EXT, "new uriArray failed"); + return; + } + for (std::size_t i = 0; i < size; i++) { + uriArray->Set(i, String::Box(result.uris[i])); + } + resultParams.SetParam("uris", uriArray); + resultParams.SetParam("flags", AAFwk::Integer::Box(result.flags)); + sptr pWantParams = WantParamWrapper::Box(resultParams); params.SetParam(INSIGHT_INTENT_EXECUTE_RESULT, pWantParams); + + ret = res->second->TransferExtensionData(params); } - Rosen::WMError ret = res->second->TransferExtensionData(params); if (ret == Rosen::WMError::WM_OK) { TAG_LOGD(AAFwkTag::UI_EXT, "TransferExtensionData success"); } else { diff --git a/frameworks/native/ability/native/ui_extension_base/js_ui_extension_base.cpp b/frameworks/native/ability/native/ui_extension_base/js_ui_extension_base.cpp index 25fe284c41..0a48eb36b8 100644 --- a/frameworks/native/ability/native/ui_extension_base/js_ui_extension_base.cpp +++ b/frameworks/native/ability/native/ui_extension_base/js_ui_extension_base.cpp @@ -625,31 +625,36 @@ void JsUIExtensionBase::OnInsightIntentExecuteDone(const sptrsecond != nullptr) { WantParams params; params.SetParam(INSIGHT_INTENT_EXECUTE_RESULT_CODE, Integer::Box(result.innerErr)); - WantParams resultParams; - resultParams.SetParam("code", Integer::Box(result.code)); - if (result.result != nullptr) { + + Rosen::WMError ret = Rosen::WMError::WM_OK; + if (result.isDecorator && result.result) { sptr pWantParams = WantParamWrapper::Box(*result.result); - if (pWantParams != nullptr) { + params.SetParam(INSIGHT_INTENT_EXECUTE_RESULT, pWantParams); + ret = res->second->TransferExtensionData(params); + } else { + WantParams resultParams; + resultParams.SetParam("code", Integer::Box(result.code)); + if (result.result != nullptr) { + sptr pWantParams = WantParamWrapper::Box(*result.result); resultParams.SetParam("result", pWantParams); } - } - auto size = result.uris.size(); - sptr uriArray = new (std::nothrow) Array(size, g_IID_IString); - if (uriArray == nullptr) { - TAG_LOGE(AAFwkTag::UI_EXT, "new uriArray failed"); - return; - } - for (std::size_t i = 0; i < size; i++) { - uriArray->Set(i, String::Box(result.uris[i])); - } - resultParams.SetParam("uris", uriArray); - resultParams.SetParam("flags", Integer::Box(result.flags)); - sptr pWantParams = WantParamWrapper::Box(resultParams); - if (pWantParams != nullptr) { + auto size = result.uris.size(); + sptr uriArray = new (std::nothrow) Array(size, g_IID_IString); + if (uriArray == nullptr) { + TAG_LOGE(AAFwkTag::UI_EXT, "new uriArray failed"); + return; + } + for (std::size_t i = 0; i < size; i++) { + uriArray->Set(i, String::Box(result.uris[i])); + } + resultParams.SetParam("uris", uriArray); + resultParams.SetParam("flags", Integer::Box(result.flags)); + sptr pWantParams = WantParamWrapper::Box(resultParams); params.SetParam(INSIGHT_INTENT_EXECUTE_RESULT, pWantParams); + + ret = res->second->TransferExtensionData(params); } - Rosen::WMError ret = res->second->TransferExtensionData(params); if (ret == Rosen::WMError::WM_OK) { TAG_LOGD(AAFwkTag::UI_EXT, "TransferExtensionData success"); } else {