Loading flags/subscription.aconfig +12 −0 Original line number Diff line number Diff line Loading @@ -77,3 +77,15 @@ flag { purpose: PURPOSE_BUGFIX } } # OWNER=jackyu TARGET=24Q4 flag { name: "uicc_phone_number_fix" namespace: "telephony" description: "Fixed that empty phone number when getLine1Number returns empty" bug: "302437869" metadata { purpose: PURPOSE_BUGFIX } } src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java +13 −3 Original line number Diff line number Diff line Loading @@ -3902,11 +3902,21 @@ public class SubscriptionManagerService extends ISub.Stub { switch(source) { case SubscriptionManager.PHONE_NUMBER_SOURCE_UICC: final Phone phone = PhoneFactory.getPhone(getSlotIndex(subId)); if (mFeatureFlags.uiccPhoneNumberFix()) { if (phone != null) { String number = phone.getLine1Number(); if (!TextUtils.isEmpty(number)) { return number; } } return subInfo.getNumber(); } else { if (phone != null) { return TextUtils.emptyIfNull(phone.getLine1Number()); } else { return subInfo.getNumber(); } } case SubscriptionManager.PHONE_NUMBER_SOURCE_CARRIER: return subInfo.getNumberFromCarrier(); case SubscriptionManager.PHONE_NUMBER_SOURCE_IMS: Loading tests/telephonytests/src/com/android/internal/telephony/subscription/SubscriptionManagerServiceTest.java +22 −1 Original line number Diff line number Diff line Loading @@ -242,6 +242,10 @@ public class SubscriptionManagerServiceTest extends TelephonyTest { // Due to affect exist implementation, bypass feature flag. doReturn(false).when(mFlags).enforceTelephonyFeatureMappingForPublicApis(); doReturn(true).when(mFlags).saferGetPhoneNumber(); doReturn(true).when(mFlags).uiccPhoneNumberFix(); doReturn(true).when(mPackageManager).hasSystemFeature( eq(PackageManager.FEATURE_TELEPHONY_SUBSCRIPTION)); logd("SubscriptionManagerServiceTest -Setup!"); Loading Loading @@ -1832,7 +1836,7 @@ public class SubscriptionManagerServiceTest extends TelephonyTest { multiNumberSubInfo = new SubscriptionInfoInternal.Builder(multiNumberSubInfo) .setNumberFromCarrier("") .setNumber(phoneNumberFromUicc) .setNumber("") .setNumberFromIms(phoneNumberFromIms) .build(); subId = insertSubscription(multiNumberSubInfo); Loading Loading @@ -2523,6 +2527,23 @@ public class SubscriptionManagerServiceTest extends TelephonyTest { .isEmpty(); } @Test public void testGetPhoneNumberFromUicc() { mContextFixture.addCallingOrSelfPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE); testSetPhoneNumber(); // Number from line1Number should be FAKE_PHONE_NUMBER1 instead of FAKE_PHONE_NUMBER2 assertThat(mSubscriptionManagerServiceUT.getPhoneNumber(1, SubscriptionManager.PHONE_NUMBER_SOURCE_UICC, CALLING_PACKAGE, CALLING_FEATURE)) .isEqualTo(FAKE_PHONE_NUMBER1); doReturn("").when(mPhone).getLine1Number(); // If getLine1Number is empty, then the number should be from the sub info. assertThat(mSubscriptionManagerServiceUT.getPhoneNumber(1, SubscriptionManager.PHONE_NUMBER_SOURCE_UICC, CALLING_PACKAGE, CALLING_FEATURE)) .isEqualTo(FAKE_PHONE_NUMBER2); } @Test public void testGetPhoneNumberFromInactiveSubscription() { mContextFixture.addCallingOrSelfPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE); Loading Loading
flags/subscription.aconfig +12 −0 Original line number Diff line number Diff line Loading @@ -77,3 +77,15 @@ flag { purpose: PURPOSE_BUGFIX } } # OWNER=jackyu TARGET=24Q4 flag { name: "uicc_phone_number_fix" namespace: "telephony" description: "Fixed that empty phone number when getLine1Number returns empty" bug: "302437869" metadata { purpose: PURPOSE_BUGFIX } }
src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java +13 −3 Original line number Diff line number Diff line Loading @@ -3902,11 +3902,21 @@ public class SubscriptionManagerService extends ISub.Stub { switch(source) { case SubscriptionManager.PHONE_NUMBER_SOURCE_UICC: final Phone phone = PhoneFactory.getPhone(getSlotIndex(subId)); if (mFeatureFlags.uiccPhoneNumberFix()) { if (phone != null) { String number = phone.getLine1Number(); if (!TextUtils.isEmpty(number)) { return number; } } return subInfo.getNumber(); } else { if (phone != null) { return TextUtils.emptyIfNull(phone.getLine1Number()); } else { return subInfo.getNumber(); } } case SubscriptionManager.PHONE_NUMBER_SOURCE_CARRIER: return subInfo.getNumberFromCarrier(); case SubscriptionManager.PHONE_NUMBER_SOURCE_IMS: Loading
tests/telephonytests/src/com/android/internal/telephony/subscription/SubscriptionManagerServiceTest.java +22 −1 Original line number Diff line number Diff line Loading @@ -242,6 +242,10 @@ public class SubscriptionManagerServiceTest extends TelephonyTest { // Due to affect exist implementation, bypass feature flag. doReturn(false).when(mFlags).enforceTelephonyFeatureMappingForPublicApis(); doReturn(true).when(mFlags).saferGetPhoneNumber(); doReturn(true).when(mFlags).uiccPhoneNumberFix(); doReturn(true).when(mPackageManager).hasSystemFeature( eq(PackageManager.FEATURE_TELEPHONY_SUBSCRIPTION)); logd("SubscriptionManagerServiceTest -Setup!"); Loading Loading @@ -1832,7 +1836,7 @@ public class SubscriptionManagerServiceTest extends TelephonyTest { multiNumberSubInfo = new SubscriptionInfoInternal.Builder(multiNumberSubInfo) .setNumberFromCarrier("") .setNumber(phoneNumberFromUicc) .setNumber("") .setNumberFromIms(phoneNumberFromIms) .build(); subId = insertSubscription(multiNumberSubInfo); Loading Loading @@ -2523,6 +2527,23 @@ public class SubscriptionManagerServiceTest extends TelephonyTest { .isEmpty(); } @Test public void testGetPhoneNumberFromUicc() { mContextFixture.addCallingOrSelfPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE); testSetPhoneNumber(); // Number from line1Number should be FAKE_PHONE_NUMBER1 instead of FAKE_PHONE_NUMBER2 assertThat(mSubscriptionManagerServiceUT.getPhoneNumber(1, SubscriptionManager.PHONE_NUMBER_SOURCE_UICC, CALLING_PACKAGE, CALLING_FEATURE)) .isEqualTo(FAKE_PHONE_NUMBER1); doReturn("").when(mPhone).getLine1Number(); // If getLine1Number is empty, then the number should be from the sub info. assertThat(mSubscriptionManagerServiceUT.getPhoneNumber(1, SubscriptionManager.PHONE_NUMBER_SOURCE_UICC, CALLING_PACKAGE, CALLING_FEATURE)) .isEqualTo(FAKE_PHONE_NUMBER2); } @Test public void testGetPhoneNumberFromInactiveSubscription() { mContextFixture.addCallingOrSelfPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE); Loading