summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Xiangyu/Malcolm Chen <refuhoo@google.com> 2018-12-20 16:45:47 -0800
committer android-build-merger <android-build-merger@google.com> 2018-12-20 16:45:47 -0800
commit477d3989d3ee1cb404e6997bbcdb7d7f82d0681c (patch)
tree88fd8e0ddc715d32a21fd2a074b7cf70cee0da6a
parent14823f0cedb8a981e408cd7a40713fcc27443c46 (diff)
parent00baab3d2926b69932080f2d759bfc0e219f2bf0 (diff)
Merge "Add APIs to indicate which subscriptions should be hidden from user"
am: 00baab3d29 Change-Id: Ia7177cb163a2d61988d58637db70bb1b6f5a60ac
-rw-r--r--telephony/java/android/telephony/SubscriptionManager.java38
1 files changed, 38 insertions, 0 deletions
diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java
index 47f265675765..b3c4b827516d 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
@@ -2514,6 +2516,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;
}