From 9dd3b2162dd308762a023ad07a39c2379bcbf931 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Sat, 5 Mar 2016 17:43:20 -0700 Subject: [PATCH] Set default ringtones through RingtoneManager. RingtoneManager is the public API that everyone should be going through, and it now has the side-effect of caching the set ringtone to make it available before CE storage is unlocked. Bug: 27435331 Change-Id: I30ed4e2df2ef1e4fd47f947c70845aaa74356384 --- media/java/android/media/MediaScanner.java | 26 +++++++++++----------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/media/java/android/media/MediaScanner.java b/media/java/android/media/MediaScanner.java index 78f357f9cea8f..5fd85d19b9b9d 100644 --- a/media/java/android/media/MediaScanner.java +++ b/media/java/android/media/MediaScanner.java @@ -1042,13 +1042,13 @@ public class MediaScanner implements AutoCloseable { if(needToSetSettings) { if (notifications) { - setSettingIfNotSet(Settings.System.NOTIFICATION_SOUND, tableUri, rowId); + setRingtoneIfNotSet(Settings.System.NOTIFICATION_SOUND, tableUri, rowId); mDefaultNotificationSet = true; } else if (ringtones) { - setSettingIfNotSet(Settings.System.RINGTONE, tableUri, rowId); + setRingtoneIfNotSet(Settings.System.RINGTONE, tableUri, rowId); mDefaultRingtoneSet = true; } else if (alarms) { - setSettingIfNotSet(Settings.System.ALARM_ALERT, tableUri, rowId); + setRingtoneIfNotSet(Settings.System.ALARM_ALERT, tableUri, rowId); mDefaultAlarmSet = true; } } @@ -1063,18 +1063,18 @@ public class MediaScanner implements AutoCloseable { pathFilenameStart + filenameLength == path.length(); } - private void setSettingIfNotSet(String settingName, Uri uri, long rowId) { - - if(wasSettingAlreadySet(settingName)) { + private void setRingtoneIfNotSet(String settingName, Uri uri, long rowId) { + if (wasRingtoneAlreadySet(settingName)) { return; } ContentResolver cr = mContext.getContentResolver(); String existingSettingValue = Settings.System.getString(cr, settingName); if (TextUtils.isEmpty(existingSettingValue)) { - // Set the setting to the given URI - Settings.System.putString(cr, settingName, - ContentUris.withAppendedId(uri, rowId).toString()); + final Uri settingUri = Settings.System.getUriFor(settingName); + final Uri ringtoneUri = ContentUris.withAppendedId(uri, rowId); + RingtoneManager.setActualDefaultRingtoneUri(mContext, + RingtoneManager.getDefaultType(settingUri), ringtoneUri); } Settings.System.putInt(cr, settingSetIndicatorName(settingName), 1); } @@ -1107,7 +1107,7 @@ public class MediaScanner implements AutoCloseable { return base + "_set"; } - private boolean wasSettingAlreadySet(String name) { + private boolean wasRingtoneAlreadySet(String name) { ContentResolver cr = mContext.getContentResolver(); String indicatorName = settingSetIndicatorName(name); try { @@ -1134,9 +1134,9 @@ public class MediaScanner implements AutoCloseable { selectionArgs = new String[] { "" }; } - mDefaultRingtoneSet = wasSettingAlreadySet(Settings.System.RINGTONE); - mDefaultNotificationSet = wasSettingAlreadySet(Settings.System.NOTIFICATION_SOUND); - mDefaultAlarmSet = wasSettingAlreadySet(Settings.System.ALARM_ALERT); + mDefaultRingtoneSet = wasRingtoneAlreadySet(Settings.System.RINGTONE); + mDefaultNotificationSet = wasRingtoneAlreadySet(Settings.System.NOTIFICATION_SOUND); + mDefaultAlarmSet = wasRingtoneAlreadySet(Settings.System.ALARM_ALERT); // Tell the provider to not delete the file. // If the file is truly gone the delete is unnecessary, and we want to avoid