From ff5b3316b0869176b2d6c2322af87d89fb1c2bde Mon Sep 17 00:00:00 2001 From: heguokai <275503077@qq.com> Date: Fri, 5 Sep 2025 18:02:11 +0800 Subject: [PATCH] =?UTF-8?q?GetIconButtonArray=E5=A2=9E=E5=8A=A0=E9=95=BF?= =?UTF-8?q?=E5=BA=A6=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: heguokai <275503077@qq.com> --- frameworks/ets/ani/include/sts_notification_content.h | 6 ++++-- frameworks/ets/ani/src/sts_notification_content.cpp | 11 +++++++---- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/frameworks/ets/ani/include/sts_notification_content.h b/frameworks/ets/ani/include/sts_notification_content.h index ba4656b72..34f73e559 100644 --- a/frameworks/ets/ani/include/sts_notification_content.h +++ b/frameworks/ets/ani/include/sts_notification_content.h @@ -37,6 +37,8 @@ using LiveViewTypes = OHOS::Notification::NotificationLocalLiveViewContent::Live namespace OHOS { namespace NotificationSts { using namespace OHOS::Notification; +const uint32_t BUTTON_MAX_SIZE = 3; +const uint32_t CAPSULE_BTN_MAX_SIZE = 2; enum STSLiveViewStatus { LIVE_VIEW_CREATE = 0, @@ -66,8 +68,8 @@ bool WarpNotificationTime(ani_env *env, const NotificationTime &time, bool isIni ani_status UnWarpNotificationIconButton(ani_env *env, ani_object obj, NotificationIconButton &iconButton); ani_object WarpNotificationIconButton(ani_env *env, const NotificationIconButton &button); -ani_status GetIconButtonArray(ani_env *env, - ani_object param, const char *name, std::vector &res); +ani_status GetIconButtonArray(ani_env *env, ani_object param, const char *name, + std::vector &res, const uint32_t maxLen); ani_object GetAniIconButtonArray(ani_env *env, const std::vector buttons); void UnWarpNotificationLocalLiveViewButton(ani_env *env, ani_object obj, diff --git a/frameworks/ets/ani/src/sts_notification_content.cpp b/frameworks/ets/ani/src/sts_notification_content.cpp index 52abe95ed..f9b8ebbc2 100644 --- a/frameworks/ets/ani/src/sts_notification_content.cpp +++ b/frameworks/ets/ani/src/sts_notification_content.cpp @@ -309,8 +309,8 @@ ani_status UnWarpNotificationIconButton(ani_env *env, ani_object obj, Notificati return status; } -ani_status GetIconButtonArray(ani_env *env, - ani_object param, const char *name, std::vector &res) +ani_status GetIconButtonArray(ani_env *env, ani_object param, const char *name, + std::vector &res, const uint32_t maxLen) { ANS_LOGD("GetIconButtonArray call"); if (env == nullptr || param == nullptr || name == nullptr) { @@ -330,6 +330,9 @@ ani_status GetIconButtonArray(ani_env *env, ANS_LOGI("status : %{public}d", status); return status; } + if (length > maxLen) { + length = static_cast(maxLen); + } for (int i = 0; i < static_cast(length); i++) { ani_ref buttonRef; status = env->Object_CallMethodByName_Ref(static_cast(arrayObj), @@ -469,7 +472,7 @@ bool getCapsuleByButtons(ani_env *env, ani_object obj, std::vector buttons = {}; - if (GetIconButtonArray(env, obj, "cardButtons", buttons) == ANI_OK) { + if (GetIconButtonArray(env, obj, "cardButtons", buttons, BUTTON_MAX_SIZE) == ANI_OK) { localLiveViewContent->SetCardButton(buttons); localLiveViewContent->addFlag(NotificationLocalLiveViewContent::LiveViewContentInner::CARD_BUTTON); } else { -- Gitee