diff --git a/frameworks/reminder_ani/BUILD.gn b/frameworks/reminder_ani/BUILD.gn index 3043269be39b27a63a011869f70503cb035cfdb4..988c8871cefbf1c01d2cd36f13410214eb3c3b46 100644 --- a/frameworks/reminder_ani/BUILD.gn +++ b/frameworks/reminder_ani/BUILD.gn @@ -65,6 +65,7 @@ taihe_shared_library("reminder_agent_manager_ani") { external_deps = [ "ability_base:zuri", + "ability_runtime:ani_common", "access_token:libaccesstoken_sdk", "access_token:libtokenid_sdk", "c_utils:utils", diff --git a/frameworks/reminder_ani/idl/ohos.reminderAgentManager.manager.taihe b/frameworks/reminder_ani/idl/ohos.reminderAgentManager.manager.taihe index ff13de9878c4fa91224a5e73959ff507ad5a316d..48d9f8f073c9adcd0afd8f1bbe09743a96a33009 100644 --- a/frameworks/reminder_ani/idl/ohos.reminderAgentManager.manager.taihe +++ b/frameworks/reminder_ani/idl/ohos.reminderAgentManager.manager.taihe @@ -48,7 +48,7 @@ struct WantAgent { pkgName: String; abilityName: String; uri: Optional; - parameters: Optional<@record Map>; + parameters: Optional; } struct MaxScreenWantAgent { diff --git a/frameworks/reminder_ani/include/reminder_ani_common.h b/frameworks/reminder_ani/include/reminder_ani_common.h index b52e18e47909b3ee6349f5e81f001d40ac4226ec..454c0f0d33a8048f56360046741624b663b0ddb6 100644 --- a/frameworks/reminder_ani/include/reminder_ani_common.h +++ b/frameworks/reminder_ani/include/reminder_ani_common.h @@ -103,9 +103,6 @@ private: static void GenAniStringResult(const sptr& reminder, ::ohos::reminderAgentManager::manager::ReminderRequest& base); - static void GenAniWantParams(const std::shared_ptr& wantInfo, - ::ohos::reminderAgentManager::manager::WantAgent& aniWantAgent); - static void GenAniWantAgent(const sptr& reminder, ::taihe::optional<::ohos::reminderAgentManager::manager::WantAgent>& aniWantAgent); static void GenAniMaxScreenWantAgent(const sptr& reminder, diff --git a/frameworks/reminder_ani/src/reminder_ani_common.cpp b/frameworks/reminder_ani/src/reminder_ani_common.cpp index 7afafa7fe72a8dd00e4c4b36c20c798f53cb5fb7..a2956f3d8a67c18380009d878e956c53da1ff047 100644 --- a/frameworks/reminder_ani/src/reminder_ani_common.cpp +++ b/frameworks/reminder_ani/src/reminder_ani_common.cpp @@ -27,6 +27,7 @@ #include "double_wrapper.h" #include "string_wrapper.h" #include "taihe/runtime.hpp" +#include "ani_common_want.h" using namespace ohos; @@ -358,32 +359,9 @@ void Common::ParseWantAgent(const reminderAgentManager::manager::WantAgent& want return; } - for (const auto& [key, value] : wantAgentReq.parameters.value()) { - switch (value.get_tag()) { - case reminderAgentManager::manager::ParamType::tag_t::string_t: { - wantAgent->parameters.SetParam(std::string(key.c_str()), - AAFwk::String::Box(std::string(value.get_string_t_ref().c_str()))); - break; - } - case reminderAgentManager::manager::ParamType::tag_t::double_t: { - wantAgent->parameters.SetParam(std::string(key.c_str()), - AAFwk::Double::Box(value.get_double_t_ref())); - break; - } - case reminderAgentManager::manager::ParamType::tag_t::int_t: { - wantAgent->parameters.SetParam(std::string(key.c_str()), - AAFwk::Integer::Box(value.get_int_t_ref())); - break; - } - case reminderAgentManager::manager::ParamType::tag_t::bool_t: { - wantAgent->parameters.SetParam(std::string(key.c_str()), - AAFwk::Boolean::Box(value.get_bool_t_ref())); - break; - } - default: - break; - } - } + ani_env *env = ::taihe::get_env(); + ani_ref param = reinterpret_cast(wantAgentReq.parameters.value()); + ::OHOS::AppExecFwk::UnwrapWantParams(env, param, wantAgent->parameters); } void Common::ParseMaxScreenWantAgent(const reminderAgentManager::manager::MaxScreenWantAgent& wantAgentReq, @@ -683,58 +661,6 @@ void Common::GenAniStringResult(const sptr& remin base.customRingUri = ::taihe::optional<::taihe::string>::make(::taihe::string(reminder->GetCustomRingUri())); } -void Common::GenAniWantParams(const std::shared_ptr& wantInfo, - reminderAgentManager::manager::WantAgent& aniWantAgent) -{ - auto params = wantInfo->parameters.GetParams(); - if (params.size() == 0) { - return; - } - ::taihe::map<::taihe::string, reminderAgentManager::manager::ParamType> aniParams; - for (const auto& iter : params) { - int32_t typeId = AAFwk::WantParams::GetDataType(iter.second); - switch (typeId) { - case VALUE_TYPE_INT: { - AAFwk::IInteger* intPtr = AAFwk::IInteger::Query(iter.second); - if (intPtr != nullptr) { - int32_t intVal = AAFwk::Integer::Unbox(intPtr); - aniParams.emplace(iter.first, reminderAgentManager::manager::ParamType::make_int_t(intVal)); - } - break; - } - case VALUE_TYPE_DOUBLE: { - AAFwk::IDouble* doublePtr = AAFwk::IDouble::Query(iter.second); - if (doublePtr != nullptr) { - double doubleVal = AAFwk::Double::Unbox(doublePtr); - aniParams.emplace(iter.first, reminderAgentManager::manager::ParamType::make_double_t(doubleVal)); - } - break; - } - case VALUE_TYPE_BOOLEAN: { - AAFwk::IBoolean *boolPtr = AAFwk::IBoolean::Query(iter.second); - if (boolPtr != nullptr) { - bool boolVal = AAFwk::Boolean::Unbox(boolPtr); - aniParams.emplace(iter.first, reminderAgentManager::manager::ParamType::make_bool_t(boolVal)); - } - break; - } - case VALUE_TYPE_STRING: { - AAFwk::IString *strPtr = AAFwk::IString::Query(iter.second); - if (strPtr != nullptr) { - std::string strVal = AAFwk::String::Unbox(strPtr); - aniParams.emplace(iter.first, reminderAgentManager::manager::ParamType::make_string_t(strVal)); - } - break; - } - default: { - break; - } - } - } - aniWantAgent.parameters = - ::taihe::optional<::taihe::map<::taihe::string, reminderAgentManager::manager::ParamType>>::make(aniParams); -} - void Common::GenAniWantAgent(const sptr& reminder, ::taihe::optional& aniWantAgent) { @@ -747,7 +673,9 @@ void Common::GenAniWantAgent(const sptr& reminder .abilityName = ::taihe::string(wantAgent->abilityName), .uri = ::taihe::optional<::taihe::string>::make(::taihe::string(wantAgent->uri)), }; - GenAniWantParams(wantAgent, aniWant); + ani_env *env = ::taihe::get_env(); + ani_ref aniParams = ::OHOS::AppExecFwk::WrapWantParams(env, wantAgent->parameters); + aniWant.parameters = ::taihe::optional::make(reinterpret_cast(aniParams)); aniWantAgent = ::taihe::optional::make(aniWant); }