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

Commit fa8ee797 authored by Doris Ling's avatar Doris Ling
Browse files

Get the ringtone name in background thread.

- to prevent anr, retrieve the current ringtone in background thread.

Change-Id: I701adfa618553c03aa24719b2550ea3ee97d9bfa
Fixes: 117124470
Test: make RunSettingsRoboTests
parent b3eaf625
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import androidx.preference.Preference;

import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.utils.ThreadUtils;

public abstract class RingtonePreferenceControllerBase extends AbstractPreferenceController
        implements PreferenceControllerMixin {
@@ -45,11 +46,17 @@ public abstract class RingtonePreferenceControllerBase extends AbstractPreferenc

    @Override
    public void updateState(Preference preference) {
        ThreadUtils.postOnBackgroundThread(() -> updateSummary(preference));
    }

    private void updateSummary(Preference preference) {
        Uri ringtoneUri = RingtoneManager.getActualDefaultRingtoneUri(mContext, getRingtoneType());
        final CharSequence summary = Ringtone.getTitle(
            mContext, ringtoneUri, false /* followSettingsUri */, true /* allowRemote */);
        if (summary != null) {
            ThreadUtils.postOnMainThread(() -> {
                preference.setSummary(summary);
            });
        }
    }