summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Scott Warner <Tortel1210@gmail.com> 2020-01-31 10:44:32 -0500
committer Luca Stefani <luca.stefani.ge1@gmail.com> 2020-02-14 14:33:02 +0100
commitfb3973a917d9e6a1a81928296fa4cce034b76b75 (patch)
treeda4c1a5d485d7078ec8f36a580078663c9b2dfc0
parent79b6ad735baf4c1bf490053dc9b77b0e5ebf4045 (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.java20
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;
}