diff options
| author | 2018-12-12 07:20:12 +0000 | |
|---|---|---|
| committer | 2018-12-12 07:20:12 +0000 | |
| commit | 04db03d05cad47c12f000332313e8b4f0c16d60f (patch) | |
| tree | e8786255841fd10e61faf7efd8a19b62040a3b54 | |
| parent | 9dfc3c1b45e9dd476055d7915919aa02c62dea9e (diff) | |
| parent | e046dd537f4b5ad8b10e173990ef2c046f0afedd (diff) | |
Merge "Add APIs to indicate which subscriptions should be hidden from user"
| -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 e932928b197c..aa2a69d6f6b3 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 @@ -2528,6 +2530,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; } |