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

Commit 02eb0aa9 authored by Chaohui Wang's avatar Chaohui Wang
Browse files

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
parent 750cea24
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -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();