SubscriptionsPreferenceController shows the unique sim description.

Bug: 148303118
Bug: 150370656
Test: atest -c SubscriptionsPreferenceControllerTest
Change-Id: I041536fe0148087a068c6000383b382b0ff4e17c
This commit is contained in:
Jeremy Goldman
2021-01-15 16:32:07 +08:00
parent 8e2ecd5918
commit 9d87cd9126
33 changed files with 153 additions and 71 deletions

View File

@@ -26,6 +26,12 @@ import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.util.ArrayMap;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.network.telephony.MobileNetworkActivity;
@@ -35,12 +41,6 @@ import com.android.settingslib.core.AbstractPreferenceController;
import java.util.List;
import java.util.Map;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
/**
* This populates the entries on a page which lists all available mobile subscriptions. Each entry
* has the name of the subscription with some subtext giving additional detail, and clicking on the
@@ -106,7 +106,9 @@ public class MobileNetworkListController extends AbstractPreferenceController im
pref = new Preference(mPreferenceScreen.getContext());
mPreferenceScreen.addPreference(pref);
}
pref.setTitle(info.getDisplayName());
final CharSequence displayName = SubscriptionUtil.getUniqueSubscriptionDisplayName(
info, mContext);
pref.setTitle(displayName);
if (info.isEmbedded()) {
if (mSubscriptionManager.isActiveSubscriptionId(subId)) {
@@ -121,7 +123,7 @@ public class MobileNetworkListController extends AbstractPreferenceController im
pref.setSummary(mContext.getString(R.string.mobile_network_inactive_sim));
} else {
pref.setSummary(mContext.getString(R.string.mobile_network_tap_to_activate,
SubscriptionUtil.getDisplayName(info)));
displayName));
}
}

View File

@@ -116,13 +116,14 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController
return null;
} else if (subs.size() == 1) {
final SubscriptionInfo info = subs.get(0);
final CharSequence displayName = SubscriptionUtil.getUniqueSubscriptionDisplayName(
info, mContext);
final int subId = info.getSubscriptionId();
if (!info.isEmbedded() && !mSubscriptionManager.isActiveSubscriptionId(subId)
&& !SubscriptionUtil.showToggleForPhysicalSim(mSubscriptionManager)) {
return mContext.getString(R.string.mobile_network_tap_to_activate,
SubscriptionUtil.getDisplayName(info));
return mContext.getString(R.string.mobile_network_tap_to_activate, displayName);
} else {
return subs.get(0).getDisplayName();
return displayName;
}
} else {
if (com.android.settings.Utils.isProviderModelEnabled(mContext)) {
@@ -135,8 +136,9 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController
}
private CharSequence getSummaryForProviderModel(List<SubscriptionInfo> subs) {
return String.join(", ", subs.stream().map(SubscriptionInfo::getDisplayName)
.collect(Collectors.toList()));
return String.join(", ", subs.stream().map(subInfo -> {
return SubscriptionUtil.getUniqueSubscriptionDisplayName(subInfo, mContext);
}).collect(Collectors.toList()));
}
private void startAddSimFlow() {

View File

@@ -91,20 +91,22 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl
final StringBuilder summary = new StringBuilder();
for (SubscriptionInfo subInfo : subs) {
int subsSize = subs.size();
final CharSequence displayName = SubscriptionUtil.getUniqueSubscriptionDisplayName(
subInfo, mContext);
// Set displayName as summary if there is only one valid SIM.
if (subsSize == 1
&& SubscriptionManager.isValidSubscriptionId(subInfo.getSubscriptionId())) {
return subInfo.getDisplayName();
return displayName;
}
CharSequence status = getPreferredStatus(subInfo);
if (status.toString().isEmpty()) {
// If there are 2 or more SIMs and one of these has no preferred status,
// set only its displayName as summary.
summary.append(subInfo.getDisplayName());
summary.append(displayName);
} else {
summary.append(subInfo.getDisplayName())
summary.append(displayName)
.append(" (")
.append(status)
.append(")");

View File

@@ -261,7 +261,8 @@ public class ProviderModelSliceHelper {
final SubscriptionInfo defaultSubscription = mSubscriptionManager.getActiveSubscriptionInfo(
mSubscriptionManager.getDefaultDataSubscriptionId());
if (defaultSubscription != null) {
title = defaultSubscription.getDisplayName().toString();
title = SubscriptionUtil.getUniqueSubscriptionDisplayName(
defaultSubscription, mContext).toString();
}
return title;
}

View File

@@ -241,7 +241,8 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl
startMobileNetworkActivity(mContext, subInfo.getSubscriptionId()));
}
mSubsGearPref.setTitle(subInfo.getDisplayName());
mSubsGearPref.setTitle(SubscriptionUtil.getUniqueSubscriptionDisplayName(
subInfo, mContext));
mSubsGearPref.setOrder(mStartOrder);
mSubsGearPref.setSummary(getMobilePreferenceSummary(subInfo.getSubscriptionId()));
mSubsGearPref.setIcon(getIcon(subInfo.getSubscriptionId()));
@@ -322,7 +323,7 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl
pref = new Preference(mPreferenceGroup.getContext());
mPreferenceGroup.addPreference(pref);
}
pref.setTitle(info.getDisplayName());
pref.setTitle(SubscriptionUtil.getUniqueSubscriptionDisplayName(info, mContext));
final boolean isDefaultForData = (subId == dataDefaultSubId);
pref.setSummary(getSummary(subId, isDefaultForData));
setIcon(pref, subId, isDefaultForData);
@@ -584,4 +585,4 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl
NO_CELL_DATA_TYPE_ICON, cutOut);
}
}
}
}

View File

@@ -145,7 +145,7 @@ public class ContactDiscoveryPreferenceController extends TelephonyTogglePrefere
for (SubscriptionInfo info : SubscriptionUtil.getAvailableSubscriptions(context)) {
if (mSubId == info.getSubscriptionId()) {
result = info.getDisplayName();
result = SubscriptionUtil.getUniqueSubscriptionDisplayName(info, context);
break;
}
}

View File

@@ -126,7 +126,7 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere
final SubscriptionInfo info = getDefaultSubscriptionInfo();
if (info != null) {
// display subscription based account
return info.getDisplayName();
return SubscriptionUtil.getUniqueSubscriptionDisplayName(info, mContext);
} else {
if (isAskEverytimeSupported()) {
return mContext.getString(R.string.calls_and_sms_ask_every_time);
@@ -160,7 +160,8 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere
if (Utils.isProviderModelEnabled(mContext) && subs.size() == 1) {
mPreference.setEnabled(false);
mPreference.setSummary(subs.get(0).getDisplayName());
mPreference.setSummary(SubscriptionUtil.getUniqueSubscriptionDisplayName(
subs.get(0), mContext));
return;
}
@@ -171,7 +172,7 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere
if (sub.isOpportunistic()) {
continue;
}
displayNames.add(sub.getDisplayName());
displayNames.add(SubscriptionUtil.getUniqueSubscriptionDisplayName(sub, mContext));
final int subId = sub.getSubscriptionId();
subscriptionIds.add(Integer.toString(subId));
if (subId == serviceDefaultSubId) {

View File

@@ -16,7 +16,6 @@
package com.android.settings.network.telephony;
import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
@@ -141,7 +140,9 @@ public class DeleteEuiccSubscriptionDialogActivity extends SubscriptionActionDia
DIALOG_TAG_DELETE_SIM_CONFIRMATION,
getString(R.string.erase_sim_dialog_title),
getString(
R.string.erase_sim_dialog_text, mSubscriptionToBeDeleted.getDisplayName()),
R.string.erase_sim_dialog_text,
SubscriptionUtil.getUniqueSubscriptionDisplayName(
mSubscriptionToBeDeleted, this)),
getString(R.string.erase_sim_confirm_button),
getString(R.string.cancel));
}

View File

@@ -28,6 +28,7 @@ import androidx.appcompat.app.AlertDialog;
import com.android.settings.R;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.network.SubscriptionUtil;
import com.android.settings.wifi.WifiPickerTrackerHelper;
@@ -97,12 +98,14 @@ public class MobileDataDialogFragment extends InstrumentedDialogFragment impleme
final String previousName = (nextSubInfo == null)
? getContext().getResources().getString(
R.string.sim_selection_required_pref)
: nextSubInfo.getDisplayName().toString();
: SubscriptionUtil.getUniqueSubscriptionDisplayName(
nextSubInfo, getContext()).toString();
final String newName = (currentSubInfo == null)
? getContext().getResources().getString(
R.string.sim_selection_required_pref)
: currentSubInfo.getDisplayName().toString();
: SubscriptionUtil.getUniqueSubscriptionDisplayName(
currentSubInfo, getContext()).toString();
return new AlertDialog.Builder(context)
.setTitle(context.getString(R.string.sim_change_data_title, newName))

View File

@@ -167,7 +167,7 @@ public class MobileDataSlice implements CustomSliceable {
return null; // no summary text
}
return defaultSubscription.getDisplayName();
return SubscriptionUtil.getUniqueSubscriptionDisplayName(defaultSubscription, mContext);
}
private PendingIntent getPrimaryAction() {

View File

@@ -207,7 +207,7 @@ public class MobileNetworkActivity extends SettingsBaseActivity
// title will just default to the label for this activity that's already specified in
// AndroidManifest.xml.
if (subscription != null) {
setTitle(subscription.getDisplayName());
setTitle(SubscriptionUtil.getUniqueSubscriptionDisplayName(subscription, this));
}
}
@@ -299,7 +299,7 @@ public class MobileNetworkActivity extends SettingsBaseActivity
CharSequence carrierName = "";
if (info != null) {
subId = info.getSubscriptionId();
carrierName = info.getDisplayName();
carrierName = SubscriptionUtil.getUniqueSubscriptionDisplayName(info, this);
}
// If this activity was launched using ACTION_SHOW_CAPABILITY_DISCOVERY_OPT_IN, show the
// associated dialog only if the opt-in has not been granted yet.

View File

@@ -32,13 +32,11 @@ import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Log;
import androidx.annotation.VisibleForTesting;
import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceGroup;
import androidx.preference.PreferenceScreen;
@@ -194,7 +192,7 @@ public class NetworkProviderWifiCallingGroup extends
mPreferenceGroup.addPreference(pref);
}
CharSequence title = info.getDisplayName();
CharSequence title = SubscriptionUtil.getUniqueSubscriptionDisplayName(info, mContext);
if (getPhoneAccountHandleForSubscriptionId(subId) != null) {
final Intent intent = MobileNetworkUtils.buildPhoneAccountConfigureIntent(mContext,
getPhoneAccountHandleForSubscriptionId(subId));

View File

@@ -47,6 +47,7 @@ import androidx.appcompat.app.AlertDialog;
import com.android.settings.R;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.network.SubscriptionUtil;
import com.android.settingslib.DeviceInfoUtils;
import com.google.common.collect.ImmutableMap;
@@ -163,7 +164,8 @@ public class RenameMobileNetworkDialogFragment extends InstrumentedDialogFragmen
Log.w(TAG, "got null SubscriptionInfo for mSubId:" + mSubId);
return;
}
final CharSequence displayName = info.getDisplayName();
final CharSequence displayName = SubscriptionUtil.getUniqueSubscriptionDisplayName(
info, getContext());
mNameView.setText(displayName);
if (!TextUtils.isEmpty(displayName)) {
mNameView.setSelection(displayName.length());

View File

@@ -201,7 +201,8 @@ public class ToggleSubscriptionDialogActivity extends SubscriptionActionDialogAc
showProgressDialog(
getString(
R.string.sim_action_switch_sub_dialog_progress,
mSubInfo.getDisplayName()));
SubscriptionUtil.getUniqueSubscriptionDisplayName(
mSubInfo, this)));
mSwitchToEuiccSubscriptionSidecar.run(mSubInfo.getSubscriptionId());
return;
}
@@ -345,13 +346,14 @@ public class ToggleSubscriptionDialogActivity extends SubscriptionActionDialogAc
/* Displays the SIM toggling confirmation dialog. */
private void showDisableSimConfirmDialog() {
final CharSequence displayName = SubscriptionUtil.getUniqueSubscriptionDisplayName(
mSubInfo, this);
String title =
mSubInfo == null || TextUtils.isEmpty(mSubInfo.getDisplayName())
mSubInfo == null || TextUtils.isEmpty(displayName)
? getString(
R.string.privileged_action_disable_sub_dialog_title_without_carrier)
: getString(
R.string.privileged_action_disable_sub_dialog_title,
mSubInfo.getDisplayName());
R.string.privileged_action_disable_sub_dialog_title, displayName);
ConfirmDialogFragment.show(
this,
@@ -402,40 +404,48 @@ public class ToggleSubscriptionDialogActivity extends SubscriptionActionDialogAc
private String getSwitchDialogPosBtnText() {
return mIsEsimOperation
? getString(
R.string.sim_action_switch_sub_dialog_confirm, mSubInfo.getDisplayName())
R.string.sim_action_switch_sub_dialog_confirm,
SubscriptionUtil.getUniqueSubscriptionDisplayName(mSubInfo, this))
: getString(R.string.sim_switch_button);
}
private String getEnableSubscriptionTitle() {
if (mSubInfo == null || TextUtils.isEmpty(mSubInfo.getDisplayName())) {
final CharSequence displayName = SubscriptionUtil.getUniqueSubscriptionDisplayName(
mSubInfo, this);
if (mSubInfo == null || TextUtils.isEmpty(displayName)) {
return getString(R.string.sim_action_enable_sub_dialog_title_without_carrier_name);
}
return getString(R.string.sim_action_enable_sub_dialog_title, mSubInfo.getDisplayName());
return getString(R.string.sim_action_enable_sub_dialog_title, displayName);
}
private String getSwitchSubscriptionTitle() {
if (mIsEsimOperation) {
return getString(
R.string.sim_action_switch_sub_dialog_title, mSubInfo.getDisplayName());
R.string.sim_action_switch_sub_dialog_title,
SubscriptionUtil.getUniqueSubscriptionDisplayName(mSubInfo, this));
}
return getString(R.string.sim_action_switch_psim_dialog_title);
}
private String getSwitchDialogBodyMsg(SubscriptionInfo activeSub, boolean betweenEsim) {
final CharSequence subInfoName = SubscriptionUtil.getUniqueSubscriptionDisplayName(
mSubInfo, this);
final CharSequence activeSubName = SubscriptionUtil.getUniqueSubscriptionDisplayName(
activeSub, this);
if (betweenEsim && mIsEsimOperation) {
return getString(
R.string.sim_action_switch_sub_dialog_text_downloaded,
mSubInfo.getDisplayName(),
activeSub.getDisplayName());
subInfoName,
activeSubName);
} else if (mIsEsimOperation) {
return getString(
R.string.sim_action_switch_sub_dialog_text,
mSubInfo.getDisplayName(),
activeSub.getDisplayName());
subInfoName,
activeSubName);
} else {
return getString(
R.string.sim_action_switch_sub_dialog_text_single_sim,
activeSub.getDisplayName());
activeSubName);
}
}