From c3d7de01c7d1ec5b2eaf628c40a1d848bbbd2cfa Mon Sep 17 00:00:00 2001 From: Malcolm Chen Date: Fri, 21 Dec 2018 17:00:30 -0800 Subject: Add helper API to hide subscriptions when getting active subscriptions Adding a hidden API that only return user visible active subscriptions. Bug: 121396526 Test: manual Change-Id: Ib69f1c2c51d22c2a58cfa93c662dc65521f7874f Merged-In: Ib69f1c2c51d22c2a58cfa93c662dc65521f7874f --- .../android/telephony/SubscriptionManager.java | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java index c9d0eb11316d..a204d54901d3 100644 --- a/telephony/java/android/telephony/SubscriptionManager.java +++ b/telephony/java/android/telephony/SubscriptionManager.java @@ -1173,17 +1173,33 @@ public class SubscriptionManager { @SuppressAutoDoc // Blocked by b/72967236 - no support for carrier privileges @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public List getActiveSubscriptionInfoList() { - List result = null; + return getActiveSubscriptionInfoList(false); + } + + /** + * This is similar to {@link #getActiveSubscriptionInfoList()}, but if userVisibleOnly + * is true, it will filter out the hidden subscriptions. + * + * @hide + */ + public List getActiveSubscriptionInfoList(boolean userVisibleOnly) { + List activeList = null; try { ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub")); if (iSub != null) { - result = iSub.getActiveSubscriptionInfoList(mContext.getOpPackageName()); + activeList = iSub.getActiveSubscriptionInfoList(mContext.getOpPackageName()); } } catch (RemoteException ex) { // ignore it } - return result; + + if (!userVisibleOnly || activeList == null) { + return activeList; + } else { + return activeList.stream().filter(subInfo -> !shouldHideSubscription(subInfo)) + .collect(Collectors.toList()); + } } /** -- cgit v1.2.3-59-g8ed1b