diff options
| author | 2018-12-06 11:19:03 -0800 | |
|---|---|---|
| committer | 2018-12-19 19:18:55 -0800 | |
| commit | 0db9aa1693722dd61cc0efe4f61df7b3c747992f (patch) | |
| tree | 2b7d63d96df1d8cc3961934f8ddddaa2419b9a16 | |
| parent | 18350e409e723a1c466f59649e1ac6620793b6f8 (diff) | |
Add APIs to indicate which subscriptions should be hidden from user
Bug: 120573892
Test: manual
Change-Id: I46b20241b71fef2938d7340fcf0b02173d83ed87
Merged-In: I46b20241b71fef2938d7340fcf0b02173d83ed87
| -rw-r--r-- | telephony/java/android/telephony/SubscriptionManager.java | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java index 9c9ec577d7fc..05f525aa252d 100644 --- a/telephony/java/android/telephony/SubscriptionManager.java +++ b/telephony/java/android/telephony/SubscriptionManager.java @@ -53,6 +53,7 @@ import android.os.RemoteException; import android.os.ServiceManager; import android.telephony.euicc.EuiccManager; import android.telephony.ims.ImsMmTelManager; +import android.text.TextUtils; import android.util.DisplayMetrics; import android.util.Log; @@ -68,6 +69,7 @@ import java.util.List; import java.util.Locale; import java.util.concurrent.Executor; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; /** * SubscriptionManager is the application interface to SubscriptionController @@ -2512,6 +2514,42 @@ public class SubscriptionManager { (iSub)-> iSub.setMetered(isMetered, subId)); } + /** + * Whether system UI should hide a subscription. If it's a bundled opportunistic + * subscription, it shouldn't show up in anywhere in Settings app, dialer app, + * or status bar. + * + * @param info the subscriptionInfo to check against. + * @return true if this subscription should be hidden. + * + * @hide + */ + public static boolean shouldHideSubscription(SubscriptionInfo info) { + return (info != null && !TextUtils.isEmpty(info.getGroupUuid()) && info.isOpportunistic()); + } + + /** + * Return a list of subscriptions that are available and visible to the user. + * Used by Settings app to show a list of subscriptions for user to pick. + * + * <p> + * Permissions android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE is required + * for getSelectableSubscriptionInfoList to be invoked. + * @return list of user selectable subscriptions. + * + * @hide + */ + public @Nullable List<SubscriptionInfo> getSelectableSubscriptionInfoList() { + List<SubscriptionInfo> availableList = getAvailableSubscriptionInfoList(); + if (availableList == null) { + return null; + } else { + return getAvailableSubscriptionInfoList().stream() + .filter(subInfo -> !shouldHideSubscription(subInfo)) + .collect(Collectors.toList()); + } + } + private interface CallISubMethodHelper { int callMethod(ISub iSub) throws RemoteException; } |