From 31923228114510e0299889222c0f503ce5d7d2f6 Mon Sep 17 00:00:00 2001 From: Phillip Hsu Date: Tue, 20 Sep 2016 21:09:41 -0700 Subject: [PATCH] Set correct default ringtone --- .../clock2/settings/ThemedRingtonePreference.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/app/src/main/java/com/philliphsu/clock2/settings/ThemedRingtonePreference.java b/app/src/main/java/com/philliphsu/clock2/settings/ThemedRingtonePreference.java index bec1087..d971668 100644 --- a/app/src/main/java/com/philliphsu/clock2/settings/ThemedRingtonePreference.java +++ b/app/src/main/java/com/philliphsu/clock2/settings/ThemedRingtonePreference.java @@ -3,9 +3,11 @@ package com.philliphsu.clock2.settings; import android.annotation.TargetApi; import android.content.Context; import android.content.Intent; +import android.content.res.TypedArray; import android.net.Uri; import android.os.Parcelable; import android.preference.RingtonePreference; +import android.provider.Settings; import android.support.v7.app.AppCompatActivity; import android.util.AttributeSet; @@ -57,6 +59,19 @@ public class ThemedRingtonePreference extends RingtonePreference mController.tryRestoreCallback(TAG); } + @Override + protected Object onGetDefaultValue(TypedArray a, int index) { + // Our picker does not show a 'Default' item, so our defaultValue + // "content://settings/system/alarm_alert" set in XML will not show as initially selected. + // The default ringtone and its sound file URI is different for every device, + // so there isn't a string literal we can specify in XML. + // This is the same as calling: + // `RingtoneManager.getActualDefaultRingtoneUri( + // getContext(), RingtoneManager.TYPE_ALARM).toString();` + // but skips the toString(). + return Settings.System.getString(getContext().getContentResolver(), Settings.System.ALARM_ALERT); + } + @Override public void onRingtoneSelected(Uri uri) { if (callChangeListener(uri != null ? uri.toString() : "")) {