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

Commit 477d3989 authored by Xiangyu/Malcolm Chen's avatar Xiangyu/Malcolm Chen Committed by android-build-merger
Browse files

Merge "Add APIs to indicate which subscriptions should be hidden from user"

am: 00baab3d

Change-Id: Ia7177cb163a2d61988d58637db70bb1b6f5a60ac
parents 14823f0c 00baab3d
Loading
Loading
Loading
Loading
+38 −0
Original line number Diff line number Diff line
@@ -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;
    }