Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a0633d01 authored by Malcolm Chen's avatar Malcolm Chen
Browse files

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
parent 6f784e35
Loading
Loading
Loading
Loading
+20 −5
Original line number Diff line number Diff line
@@ -1102,17 +1102,33 @@ public class SubscriptionManager {
    @SuppressAutoDoc // Blocked by b/72967236 - no support for carrier privileges
    @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
    public List<SubscriptionInfo> getActiveSubscriptionInfoList() {
        List<SubscriptionInfo> 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<SubscriptionInfo> getActiveSubscriptionInfoList(boolean userVisibleOnly) {
        List<SubscriptionInfo> 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());
        }
    }

    /**
@@ -2617,8 +2633,7 @@ public class SubscriptionManager {
        if (availableList == null) {
            return null;
        } else {
            return getAvailableSubscriptionInfoList().stream()
                    .filter(subInfo -> !shouldHideSubscription(subInfo))
            return availableList.stream().filter(subInfo -> !shouldHideSubscription(subInfo))
                    .collect(Collectors.toList());
        }
    }