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

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

Add APIs to indicate which subscriptions should be hidden from user

Bug: 120573892
Test: manual
Change-Id: I46b20241b71fef2938d7340fcf0b02173d83ed87
parent cd504bbe
Loading
Loading
Loading
Loading
+38 −0
Original line number Diff line number Diff line
@@ -52,6 +52,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;

@@ -67,6 +68,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
@@ -2448,6 +2450,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;
    }