diff options
| author | 2024-02-02 18:39:05 +0000 | |
|---|---|---|
| committer | 2024-02-02 18:39:05 +0000 | |
| commit | 84e2373c181f36f6a84b8f6098849529c832bea9 (patch) | |
| tree | 2547f9ecca808533c4935ae5867c46a539dbe6cf | |
| parent | bae9abd2d6cec31da59199d92bf5f9936499e287 (diff) | |
| parent | 1cc9277e4bd58ca75b5dbaa9f6980de2dd89dedb (diff) | |
Merge "Replace Null Returns with EmptyList in SubscriptionManager" into main
| -rw-r--r-- | core/api/current.txt | 4 | ||||
| -rw-r--r-- | core/api/system-current.txt | 2 | ||||
| -rw-r--r-- | telephony/java/android/telephony/SubscriptionManager.java | 56 |
3 files changed, 26 insertions, 36 deletions
diff --git a/core/api/current.txt b/core/api/current.txt index 3e10261715a2..a3775b05cf2e 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -45225,13 +45225,13 @@ package android.telephony { method @FlaggedApi("com.android.internal.telephony.flags.enforce_subscription_user_filter") @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_PROFILES) public android.telephony.SubscriptionManager createForAllUserProfiles(); method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public android.os.ParcelUuid createSubscriptionGroup(@NonNull java.util.List<java.lang.Integer>); method @Deprecated public static android.telephony.SubscriptionManager from(android.content.Context); - method public java.util.List<android.telephony.SubscriptionInfo> getAccessibleSubscriptionInfoList(); + method @Nullable public java.util.List<android.telephony.SubscriptionInfo> getAccessibleSubscriptionInfoList(); method public static int getActiveDataSubscriptionId(); method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public android.telephony.SubscriptionInfo getActiveSubscriptionInfo(int); method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int getActiveSubscriptionInfoCount(); method public int getActiveSubscriptionInfoCountMax(); method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public android.telephony.SubscriptionInfo getActiveSubscriptionInfoForSimSlotIndex(int); - method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.List<android.telephony.SubscriptionInfo> getActiveSubscriptionInfoList(); + method @Nullable @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.List<android.telephony.SubscriptionInfo> getActiveSubscriptionInfoList(); method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.READ_PHONE_STATE, "carrier privileges"}) public java.util.List<android.telephony.SubscriptionInfo> getAllSubscriptionInfoList(); method @NonNull public java.util.List<android.telephony.SubscriptionInfo> getCompleteActiveSubscriptionInfoList(); method public static int getDefaultDataSubscriptionId(); diff --git a/core/api/system-current.txt b/core/api/system-current.txt index d0fdf694cad7..fe97349adb10 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -14590,7 +14590,7 @@ package android.telephony { method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int[] getActiveSubscriptionIdList(); method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public android.telephony.SubscriptionInfo getActiveSubscriptionInfoForIcc(@NonNull String); method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public byte[] getAllSimSpecificSettingsForBackup(); - method public java.util.List<android.telephony.SubscriptionInfo> getAvailableSubscriptionInfoList(); + method @Nullable public java.util.List<android.telephony.SubscriptionInfo> getAvailableSubscriptionInfoList(); method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int[] getCompleteActiveSubscriptionIdList(); method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getEnabledSubscriptionId(int); method @NonNull public static android.content.res.Resources getResourcesForSubId(@NonNull android.content.Context, int); diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java index eb7e67dccfd5..174954542b94 100644 --- a/telephony/java/android/telephony/SubscriptionManager.java +++ b/telephony/java/android/telephony/SubscriptionManager.java @@ -1927,34 +1927,25 @@ public class SubscriptionManager { * Then for SDK 35+, if the caller identity is personal profile, then this will return * subscription 1 only and vice versa. * - * <p> The records will be sorted by {@link SubscriptionInfo#getSimSlotIndex} then by - * {@link SubscriptionInfo#getSubscriptionId}. + * <p> Returned records will be sorted by {@link SubscriptionInfo#getSimSlotIndex} then by + * {@link SubscriptionInfo#getSubscriptionId}. Beginning with Android SDK 35, this method will + * never return null. * * <p>Requires Permission: {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} * or that the calling app has carrier privileges (see * {@link TelephonyManager#hasCarrierPrivileges}). * - * @return Sorted list of the currently {@link SubscriptionInfo} records available on the device. - * <ul> - * <li> - * If null is returned the current state is unknown but if a {@link OnSubscriptionsChangedListener} - * has been registered {@link OnSubscriptionsChangedListener#onSubscriptionsChanged} will be - * invoked in the future. - * </li> - * <li> - * If the list is empty then there are no {@link SubscriptionInfo} records currently available. - * </li> - * <li> - * if the list is non-empty the list is sorted by {@link SubscriptionInfo#getSimSlotIndex} - * then by {@link SubscriptionInfo#getSubscriptionId}. - * </li> - * </ul> + * @return a list of the active {@link SubscriptionInfo} that is visible to the caller. If + * an empty list or null is returned, then there are no active subscriptions that + * are visible to the caller. If the number of active subscriptions available to + * any caller changes, then this change will be indicated by + * {@link OnSubscriptionsChangedListener#onSubscriptionsChanged}. * * @throws UnsupportedOperationException If the device does not have - * {@link PackageManager#FEATURE_TELEPHONY_SUBSCRIPTION}. + * {@link PackageManager#FEATURE_TELEPHONY_SUBSCRIPTION}. */ @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) - public List<SubscriptionInfo> getActiveSubscriptionInfoList() { + public @Nullable List<SubscriptionInfo> getActiveSubscriptionInfoList() { List<SubscriptionInfo> activeList = null; try { @@ -1970,6 +1961,8 @@ public class SubscriptionManager { if (activeList != null) { activeList = activeList.stream().filter(subInfo -> isSubscriptionVisible(subInfo)) .collect(Collectors.toList()); + } else { + activeList = Collections.emptyList(); } return activeList; } @@ -1998,12 +1991,7 @@ public class SubscriptionManager { * {@link PackageManager#FEATURE_TELEPHONY_SUBSCRIPTION}. */ public @NonNull List<SubscriptionInfo> getCompleteActiveSubscriptionInfoList() { - List<SubscriptionInfo> completeList = getActiveSubscriptionInfoList( - /* userVisibleonly */false); - if (completeList == null) { - completeList = new ArrayList<>(); - } - return completeList; + return getActiveSubscriptionInfoList(/* userVisibleonly */ false); } /** @@ -2032,7 +2020,7 @@ public class SubscriptionManager { * * @hide */ - public @Nullable List<SubscriptionInfo> getActiveSubscriptionInfoList(boolean userVisibleOnly) { + public @NonNull List<SubscriptionInfo> getActiveSubscriptionInfoList(boolean userVisibleOnly) { List<SubscriptionInfo> activeList = null; try { @@ -2045,11 +2033,13 @@ public class SubscriptionManager { // ignore it } - if (!userVisibleOnly || activeList == null) { - return activeList; - } else { + if (activeList == null || activeList.isEmpty()) { + return Collections.emptyList(); + } else if (userVisibleOnly) { return activeList.stream().filter(subInfo -> isSubscriptionVisible(subInfo)) .collect(Collectors.toList()); + } else { + return activeList; } } @@ -2086,7 +2076,7 @@ public class SubscriptionManager { * @hide */ @SystemApi - public List<SubscriptionInfo> getAvailableSubscriptionInfoList() { + public @Nullable List<SubscriptionInfo> getAvailableSubscriptionInfoList() { List<SubscriptionInfo> result = null; try { @@ -2098,7 +2088,7 @@ public class SubscriptionManager { } catch (RemoteException ex) { // ignore it } - return result; + return (result == null) ? Collections.emptyList() : result; } /** @@ -2128,7 +2118,7 @@ public class SubscriptionManager { * @throws UnsupportedOperationException If the device does not have * {@link PackageManager#FEATURE_TELEPHONY_EUICC}. */ - public List<SubscriptionInfo> getAccessibleSubscriptionInfoList() { + public @Nullable List<SubscriptionInfo> getAccessibleSubscriptionInfoList() { List<SubscriptionInfo> result = null; try { @@ -2139,7 +2129,7 @@ public class SubscriptionManager { } catch (RemoteException ex) { // ignore it } - return result; + return (result == null) ? Collections.emptyList() : result; } /** |