Merge changes from topic "eSIM with same group UUID" into rvc-qpr-dev

* changes:
  [Settings] code refactor - rename isSubscriptionCanBeDisplayed
  [Settings] Only display 1 SIM UI when multiple with same group UUID
This commit is contained in:
Bonian Chen
2020-12-17 15:27:46 +00:00
committed by Android (Google) Code Review
2 changed files with 41 additions and 10 deletions

View File

@@ -52,6 +52,7 @@ import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.net.SignalStrengthUtil;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -166,6 +167,12 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl
final int dataDefaultSubId = SubscriptionManager.getDefaultDataSubscriptionId();
for (SubscriptionInfo info : SubscriptionUtil.getActiveSubscriptions(mManager)) {
final int subId = info.getSubscriptionId();
// Avoid from showing subscription(SIM)s which has been marked as hidden
// For example, only one subscription will be shown when there're multiple
// subscriptions with same group UUID.
if (!canSubscriptionBeDisplayed(mContext, subId)) {
continue;
}
activeSubIds.add(subId);
Preference pref = existingPrefs.remove(subId);
if (pref == null) {
@@ -292,7 +299,17 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl
if (mSubscriptionsListener.isAirplaneModeOn()) {
return false;
}
return SubscriptionUtil.getActiveSubscriptions(mManager).size() >= 2;
List<SubscriptionInfo> subInfoList = SubscriptionUtil.getActiveSubscriptions(mManager);
if (subInfoList == null) {
return false;
}
return subInfoList.stream()
// Avoid from showing subscription(SIM)s which has been marked as hidden
// For example, only one subscription will be shown when there're multiple
// subscriptions with same group UUID.
.filter(subInfo ->
canSubscriptionBeDisplayed(mContext, subInfo.getSubscriptionId()))
.count() >= 2;
}
@Override
@@ -330,4 +347,10 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl
public void onSignalStrengthChanged() {
update();
}
@VisibleForTesting
boolean canSubscriptionBeDisplayed(Context context, int subId) {
return (SubscriptionUtil.getAvailableSubscription(context,
ProxySubscriptionManager.getInstance(context), subId) != null);
}
}