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

This commit is contained in:
Xiangyu/Malcolm Chen
2018-12-21 00:05:17 +00:00
committed by Gerrit Code Review

View File

@@ -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;
}