Fix crash when operator name contains %
Currently, cannot use ListPreference.setSummary() when the summary contains user generated string, because ListPreference.getSummary() is using String.format() to format the summary when the summary is set by ListPreference.setSummary(). Use preference.setSummaryProvider() instead, which is recommended for ListPreference. Fix: 233295254 Test: manual Change-Id: Ia24d88817c99db7ed3fc264dbc9c10e0a09d8a39
This commit is contained in:
@@ -37,7 +37,6 @@ import androidx.preference.PreferenceScreen;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.network.SubscriptionUtil;
|
||||
import com.android.settings.network.SubscriptionsChangeListener;
|
||||
|
||||
@@ -115,6 +114,16 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere
|
||||
updateEntries();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void refreshSummary(Preference preference) {
|
||||
// Currently, cannot use ListPreference.setSummary() when the summary contains user
|
||||
// generated string, because ListPreference.getSummary() is using String.format() to format
|
||||
// the summary when the summary is set by ListPreference.setSummary().
|
||||
if (preference != null) {
|
||||
preference.setSummaryProvider(pref -> getSummary());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public CharSequence getSummary() {
|
||||
final PhoneAccountHandle handle = getDefaultCallingAccountHandle();
|
||||
|
Reference in New Issue
Block a user