diff --git a/services/sim/src/multi_sim_controller.cpp b/services/sim/src/multi_sim_controller.cpp index ca8c3d72f6e7c1b7e32e7e05433bf87b74040923..1c50e48203c7bebd9e95d6a4b62b326a48ed78ca 100644 --- a/services/sim/src/multi_sim_controller.cpp +++ b/services/sim/src/multi_sim_controller.cpp @@ -353,6 +353,8 @@ bool MultiSimController::InitShowNumber(int slotId) int32_t result = TELEPHONY_ERROR; if (!showNumber.empty()) { result = SetShowNumberToDB(slotId, showNumber); + TELEPHONY_LOGI( + "Init slotId: %{public}d get phone number from sim and save result: %{public}d", slotId, result); } return result == TELEPHONY_ERR_SUCCESS; } @@ -1101,8 +1103,13 @@ int32_t MultiSimController::GetShowNumber(int32_t slotId, std::u16string &showNu } showNumber = simFileManager_[slotId]->GetSimTelephoneNumber(); if (!showNumber.empty()) { - int32_t result = SetShowNumberToDB(slotId, showNumber); - TELEPHONY_LOGI("slotId: %{public}d get phone number from sim and save result: %{public}d", slotId, result); + if (showNumber != Str8ToStr16(localCacheInfo_[slotId].phoneNumber)) { + TelFFRTUtils::Submit([=]() { + int32_t result = SetShowNumberToDB(slotId, showNumber); + TELEPHONY_LOGI( + "slotId: %{public}d get phone number from sim and save result: %{public}d", slotId, result); + }); + } return TELEPHONY_ERR_SUCCESS; } int curSimId; @@ -1232,10 +1239,11 @@ int32_t MultiSimController::GetSimTelephoneNumber(int32_t slotId, std::u16string telephoneNumber = Str8ToStr16(result); TELEPHONY_LOGI("impu result is empty:%{public}s, slotId:%{public}d", (telephoneNumber.empty() ? "true" : "false"), slotId); - if (!telephoneNumber.empty()) { - int32_t result = TELEPHONY_ERROR; - result = SetShowNumberToDB(slotId, telephoneNumber); - TELEPHONY_LOGI("slotId: %{public}d save impu phone number result: %{public}d", slotId, result); + if (!telephoneNumber.empty() && telephoneNumber != Str8ToStr16(localCacheInfo_[slotId].phoneNumber)) { + TelFFRTUtils::Submit([=]() { + int32_t ret = SetShowNumberToDB(slotId, telephoneNumber); + TELEPHONY_LOGI("slotId: %{public}d save impu phone number result: %{public}d", slotId, ret); + }); } return TELEPHONY_ERR_SUCCESS; } diff --git a/test/unittest/core_service_gtest/core_service_test.cpp b/test/unittest/core_service_gtest/core_service_test.cpp index a229347298ebd6b3a432b3fd9d3f0d4a9104a86a..182a59d6ada52d13dbc9a99798884d7d6ff64044 100644 --- a/test/unittest/core_service_gtest/core_service_test.cpp +++ b/test/unittest/core_service_gtest/core_service_test.cpp @@ -610,6 +610,19 @@ HWTEST_F(CoreServiceTest, CoreService_DelIccDiallingNumbers_001, Function | Medi ASSERT_EQ(result, TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API); } +/** + * @tc.number CoreService_GetSimTelephoneNumber_002 + * @tc.name test normal branch + * @tc.desc Function test + */ +HWTEST_F(CoreServiceTest, CoreService_GetSimTelephoneNumber_002, Function | MediumTest | Level1) +{ + SecurityToken token; + std::u16string telephoneNumber = u""; + auto result = DelayedSingleton::GetInstance()->GetSimTelephoneNumber(1, telephoneNumber); + EXPECT_EQ(result, TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API); +} + /** * @tc.number CoreService_UpdateIccDiallingNumbers_001 * @tc.name test normal branch