From 4d75c5c014ecedb81252bd0bfe0af73b623bb9a3 Mon Sep 17 00:00:00 2001 From: z30053788 Date: Tue, 3 Jun 2025 10:28:46 +0800 Subject: [PATCH] update Signed-off-by: z30053788 Change-Id: I48eaf87786bc5925155ede5f0362ee341e580008 --- .../include/advanced_notification_service.h | 1 + .../advanced_notification_publish_service.cpp | 24 ++++++++++++------- .../distributed_publish_service_v2.cpp | 4 ++++ 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/services/ans/include/advanced_notification_service.h b/services/ans/include/advanced_notification_service.h index e2b290e44..d2055b223 100644 --- a/services/ans/include/advanced_notification_service.h +++ b/services/ans/include/advanced_notification_service.h @@ -1573,6 +1573,7 @@ private: uint32_t GetDefaultSlotFlags(const sptr &request); bool IsSystemUser(int32_t userId); ErrCode CollaboratePublish(const sptr &request); + ErrCode SetCollaborateRequest(const sptr &request); void SetCollaborateReminderFlag(const sptr &request); ErrCode SetEnabledForBundleSlotInner(const sptr &bundleOption, const sptr &bundle, diff --git a/services/ans/src/advanced_notification_publish_service.cpp b/services/ans/src/advanced_notification_publish_service.cpp index 7145de36c..7259e3da3 100644 --- a/services/ans/src/advanced_notification_publish_service.cpp +++ b/services/ans/src/advanced_notification_publish_service.cpp @@ -150,15 +150,8 @@ void AdvancedNotificationService::UpdateCollaborateTimerInfo(const std::shared_p } } -ErrCode AdvancedNotificationService::CollaboratePublish(const sptr &request) +ErrCode AdvancedNotificationService::SetCollaborateRequest(const sptr &request) { - auto tokenCaller = IPCSkeleton::GetCallingTokenID(); - if (!AccessTokenHelper::VerifyNativeToken(tokenCaller) || - !AccessTokenHelper::VerifyCallerPermission(tokenCaller, OHOS_PERMISSION_NOTIFICATION_CONTROLLER)) { - ANS_LOGE("Collaborate publish cheak permission failed."); - return ERR_ANS_PERMISSION_DENIED; - } - int32_t uid = IPCSkeleton::GetCallingUid(); int32_t pid = IPCSkeleton::GetCallingPid(); request->SetCreatorUid(uid); @@ -174,7 +167,20 @@ ErrCode AdvancedNotificationService::CollaboratePublish(const sptrGetDeliveryTime() <= 0) { request->SetDeliveryTime(GetCurrentTime()); } + SetCollaborateReminderFlag(request); + return ERR_OK; +} + +ErrCode AdvancedNotificationService::CollaboratePublish(const sptr &request) +{ + auto tokenCaller = IPCSkeleton::GetCallingTokenID(); + if (!AccessTokenHelper::VerifyNativeToken(tokenCaller) || + !AccessTokenHelper::VerifyCallerPermission(tokenCaller, OHOS_PERMISSION_NOTIFICATION_CONTROLLER)) { + ANS_LOGE("Collaborate publish cheak permission failed."); + return ERR_ANS_PERMISSION_DENIED; + } std::shared_ptr record = std::make_shared(); + SetCollaborateRequest(request); record->request = request; record->notification = new (std::nothrow) Notification(request); if (record->notification == nullptr) { @@ -183,7 +189,7 @@ ErrCode AdvancedNotificationService::CollaboratePublish(const sptrbundleOption = new (std::nothrow) NotificationBundleOption(request->GetCreatorBundleName(), 0); record->notification->SetKey(request->GetLabel() + request->GetDistributedHashCode()); - SetCollaborateReminderFlag(record->request); + if (notificationSvrQueue_ == nullptr) { ANS_LOGE("Serial queue is invalid."); return ERR_ANS_INVALID_PARAM; diff --git a/services/distributed/src/soft_bus/distributed_publish_service_v2.cpp b/services/distributed/src/soft_bus/distributed_publish_service_v2.cpp index ad75c80b4..88075c2c8 100644 --- a/services/distributed/src/soft_bus/distributed_publish_service_v2.cpp +++ b/services/distributed/src/soft_bus/distributed_publish_service_v2.cpp @@ -428,6 +428,10 @@ void DistributedPublishService::MakeNotificationButtons(const NotificationReques } box.GetNotificationUserInput(userInputKey); std::shared_ptr userInput = NotificationUserInput::Create(userInputKey); + if (!userInput) { + ANS_LOGE("Failed to create NotificationUserInput by inputKey=%{public}s", userInputKey.c_str()); + return; + } std::shared_ptr actionButton = NotificationActionButton::Create(nullptr, actionName, nullptr); actionButton->AddNotificationUserInput(userInput); -- Gitee