diff options
| author | 2020-01-31 10:44:32 -0500 | |
|---|---|---|
| committer | 2020-02-14 14:33:02 +0100 | |
| commit | fb3973a917d9e6a1a81928296fa4cce034b76b75 (patch) | |
| tree | da4c1a5d485d7078ec8f36a580078663c9b2dfc0 | |
| parent | 79b6ad735baf4c1bf490053dc9b77b0e5ebf4045 (diff) | |
RingtoneManager: Don't crash if the ringtone doesn't have a numerical ID
When changing the notification sound for some apps with app-provided sounds,
the notification URI doesn't have a numerical ID.
For example, Outlook's email notification URI has the id 'new_email'
Test: m, outlook doesn't crash anymore, test google calendar
Change-Id: Ibf0c6f2f13e1c76ce02784165b97b92e8f7e432c
| -rw-r--r-- | media/java/android/media/RingtoneManager.java | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/media/java/android/media/RingtoneManager.java b/media/java/android/media/RingtoneManager.java index 6fd47c42bcba..66a59e09c42f 100644 --- a/media/java/android/media/RingtoneManager.java +++ b/media/java/android/media/RingtoneManager.java @@ -509,15 +509,19 @@ public class RingtoneManager { * @return The position of the {@link Uri}, or -1 if it cannot be found. */ public int getRingtonePosition(Uri ringtoneUri) { - if (ringtoneUri == null) return -1; - final long ringtoneId = ContentUris.parseId(ringtoneUri); - - final Cursor cursor = getCursor(); - cursor.moveToPosition(-1); - while (cursor.moveToNext()) { - if (ringtoneId == cursor.getLong(ID_COLUMN_INDEX)) { - return cursor.getPosition(); + try { + if (ringtoneUri == null) return -1; + final long ringtoneId = ContentUris.parseId(ringtoneUri); + + final Cursor cursor = getCursor(); + cursor.moveToPosition(-1); + while (cursor.moveToNext()) { + if (ringtoneId == cursor.getLong(ID_COLUMN_INDEX)) { + return cursor.getPosition(); + } } + } catch (NumberFormatException e) { + Log.e(TAG, "NumberFormatException while getting ringtone position, returning -1", e); } return -1; } |