From 1f1f39bec0ce9dc54b6e2dcf42d90413aec95b01 Mon Sep 17 00:00:00 2001 From: Jack Yu Date: Wed, 23 Nov 2022 14:53:53 -0800 Subject: [PATCH] Added few more APIs support Added getAllSubscriptionInfoList and setPhoneNumber support. Allowed carrier privilege apps to get full subscription info on their associated subscriptions. Bug: 239607619 Test: atest SubscriptionManagerServiceTest Change-Id: Id3c0f3afc7a5fc95beb4dde0c570520626244761 --- .../telephony/SubscriptionManager.java | 49 ++++++++++++++++--- 1 file changed, 42 insertions(+), 7 deletions(-) diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java index 4ce2ca1d1045a..5c1d4979031fa 100644 --- a/telephony/java/android/telephony/SubscriptionManager.java +++ b/telephony/java/android/telephony/SubscriptionManager.java @@ -1663,17 +1663,33 @@ public class SubscriptionManager { } /** - * @return List of all SubscriptionInfo records in database, - * include those that were inserted before, maybe empty but not null. + * Get all subscription info records from SIMs that are inserted now or were inserted before. + * + *

+ * If the caller does not have {@link Manifest.permission#READ_PHONE_NUMBERS} permission, + * {@link SubscriptionInfo#getNumber()} will return empty string. + * If the caller does not have {@link Manifest.permission#USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER}, + * {@link SubscriptionInfo#getIccId()} and {@link SubscriptionInfo#getCardString()} will return + * empty string, and {@link SubscriptionInfo#getGroupUuid()} will return {@code null}. + * + *

+ * The carrier app will always have full {@link SubscriptionInfo} for the subscriptions + * that it has carrier privilege. + * + * @return List of all {@link SubscriptionInfo} records from SIMs that are inserted or + * inserted before. Sorted by {@link SubscriptionInfo#getSimSlotIndex()}, then + * {@link SubscriptionInfo#getSubscriptionId()}. + * * @hide */ + @RequiresPermission(anyOf = { + Manifest.permission.READ_PHONE_STATE, + Manifest.permission.READ_PRIVILEGED_PHONE_STATE, + "carrier privileges", + }) @NonNull - @UnsupportedAppUsage public List getAllSubscriptionInfoList() { - if (VDBG) logd("[getAllSubscriptionInfoList]+"); - List result = null; - try { ISub iSub = TelephonyManager.getSubscriptionService(); if (iSub != null) { @@ -3424,7 +3440,6 @@ public class SubscriptionManager { /** * Get subscriptionInfo list of subscriptions that are in the same group of given subId. - * See {@link #createSubscriptionGroup(List)} for more details. * * Caller must have {@link android.Manifest.permission#READ_PHONE_STATE} * or carrier privilege permission on the subscription. @@ -4124,6 +4139,26 @@ public class SubscriptionManager { usageSetting, subscriptionId, mContext.getOpPackageName())); } + /** + * Convert phone number source to string. + * + * @param source The phone name source. + * + * @return The phone name source in string format. + * + * @hide + */ + @NonNull + public static String phoneNumberSourceToString(@PhoneNumberSource int source) { + switch (source) { + case SubscriptionManager.PHONE_NUMBER_SOURCE_UICC: return "UICC"; + case SubscriptionManager.PHONE_NUMBER_SOURCE_CARRIER: return "CARRIER"; + case SubscriptionManager.PHONE_NUMBER_SOURCE_IMS: return "IMS"; + default: + return "UNKNOWN(" + source + ")"; + } + } + /** * Convert display name source to string. *