From 8aed3e3f9e0bbb690866110581bde5c94e1fb490 Mon Sep 17 00:00:00 2001 From: Dan Sandler Date: Thu, 4 Sep 2014 02:19:28 +0200 Subject: [PATCH] Only fetch titles of ringtones coming from the MediaStore. As a fallback we attempt to get DISPLAY_NAME from the provider. Any other URIs probably don't have titles. Bug: 14093281 Change-Id: I39adbad52ef6dcc1686cbc738457b55c33948bd6 --- .../notification/NotificationSettings.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/notification/NotificationSettings.java b/src/com/android/settings/notification/NotificationSettings.java index 30940325d7e..68994404a76 100644 --- a/src/com/android/settings/notification/NotificationSettings.java +++ b/src/com/android/settings/notification/NotificationSettings.java @@ -37,6 +37,7 @@ import android.preference.PreferenceCategory; import android.preference.SeekBarVolumizer; import android.preference.TwoStatePreference; import android.provider.MediaStore; +import android.provider.OpenableColumns; import android.provider.SearchIndexableResource; import android.provider.Settings; import android.util.Log; @@ -238,11 +239,16 @@ public class NotificationSettings extends SettingsPreferenceFragment implements if (ringtoneUri == null) { summary = context.getString(com.android.internal.R.string.ringtone_silent); } else { - // Fetch the ringtone title from the media provider Cursor cursor = null; try { - cursor = context.getContentResolver().query(ringtoneUri, - new String[] { MediaStore.Audio.Media.TITLE }, null, null, null); + if (MediaStore.AUTHORITY.equals(ringtoneUri.getAuthority())) { + // Fetch the ringtone title from the media provider + cursor = context.getContentResolver().query(ringtoneUri, + new String[] { MediaStore.Audio.Media.TITLE }, null, null, null); + } else if (ContentResolver.SCHEME_CONTENT.equals(ringtoneUri.getScheme())) { + cursor = context.getContentResolver().query(ringtoneUri, + new String[] { OpenableColumns.DISPLAY_NAME }, null, null, null); + } if (cursor != null) { if (cursor.moveToFirst()) { summary = cursor.getString(0); @@ -250,6 +256,8 @@ public class NotificationSettings extends SettingsPreferenceFragment implements } } catch (SQLiteException sqle) { // Unknown title for the ringtone + } catch (IllegalArgumentException iae) { + // Some other error retrieving the column from the provider } finally { if (cursor != null) { cursor.close();