From d6bd5b1339a9e157644573c054ef6fdd6ebc7839 Mon Sep 17 00:00:00 2001 From: Yi-Ling Chuang Date: Tue, 11 Jun 2019 17:14:46 +0800 Subject: [PATCH] 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 --- .../notification/RingtonePreferenceControllerBase.java | 8 +++++--- .../RingtonePreferenceControllerBaseTest.java | 10 ---------- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/src/com/android/settings/notification/RingtonePreferenceControllerBase.java b/src/com/android/settings/notification/RingtonePreferenceControllerBase.java index 733d0d937d7..29b9266335d 100644 --- a/src/com/android/settings/notification/RingtonePreferenceControllerBase.java +++ b/src/com/android/settings/notification/RingtonePreferenceControllerBase.java @@ -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)); diff --git a/tests/robotests/src/com/android/settings/notification/RingtonePreferenceControllerBaseTest.java b/tests/robotests/src/com/android/settings/notification/RingtonePreferenceControllerBaseTest.java index 2fb1738f25a..8fd3973c278 100644 --- a/tests/robotests/src/com/android/settings/notification/RingtonePreferenceControllerBaseTest.java +++ b/tests/robotests/src/com/android/settings/notification/RingtonePreferenceControllerBaseTest.java @@ -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) {