Update sound summary when it is set to None.

Currently when the sound is set to None, we don't update the summary,
unless users go to other pages and come back. Now we refreash it for a
better user experience.

Fixes: 134994978
Test: robotest
Change-Id: I5d9c0238ee31e0c26ebde3201794c17737791c62
This commit is contained in:
Yi-Ling Chuang
2019-06-11 17:14:46 +08:00
parent 9c79591c42
commit d6bd5b1339
2 changed files with 5 additions and 13 deletions

View File

@@ -20,6 +20,7 @@ import android.content.Context;
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
import android.util.Log;
import androidx.preference.Preference;
@@ -54,11 +55,12 @@ public abstract class RingtonePreferenceControllerBase extends AbstractPreferenc
mContext, getRingtoneType());
final CharSequence summary;
if (ringtoneUri == null) {
summary = null;
} else {
try {
summary = Ringtone.getTitle(
mContext, ringtoneUri, false /* followSettingsUri */, true /* allowRemote */);
} catch (IllegalArgumentException e) {
Log.w(TAG, "Error getting ringtone summary.", e);
return;
}
if (summary != null) {
ThreadUtils.postOnMainThread(() -> preference.setSummary(summary));

View File

@@ -64,16 +64,6 @@ public class RingtonePreferenceControllerBaseTest {
verify(preference).setSummary(anyString());
}
@Test
public void updateState_nullRingtone_shouldNotGetTitle() {
Preference preference = mock(Preference.class);
Settings.System.putString(mContext.getContentResolver(), Settings.System.RINGTONE, null);
mController.updateState(preference);
verify(preference, never()).setSummary(anyString());
}
private class RingtonePreferenceControllerBaseTestable
extends RingtonePreferenceControllerBase {
RingtonePreferenceControllerBaseTestable(Context context) {