From 19035013809706bd9f62cef3cede84841306ecbb Mon Sep 17 00:00:00 2001 From: "akansha.shukla" Date: Wed, 24 Mar 2021 11:47:59 +0800 Subject: [PATCH] Fix inconsistency in ringtone list Sometimes when ringtone from external storage gets same _id as any ringtone of internal volume, getRingtonePosition(..) matches with the internal one firstly, and the ringtone shown is wrong. Solution is to match the URI of ringtone instead of the _ID so that correct ringtone is chosen. Bug: 172878342 Change-Id: I8fc3e936fe89308d4697eda42088e4fd533ce47c --- media/java/android/media/RingtoneManager.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/media/java/android/media/RingtoneManager.java b/media/java/android/media/RingtoneManager.java index e2e13b048cf79..be6ff1baadd61 100644 --- a/media/java/android/media/RingtoneManager.java +++ b/media/java/android/media/RingtoneManager.java @@ -521,12 +521,12 @@ public class RingtoneManager { public int getRingtonePosition(Uri ringtoneUri) { 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)) { + Uri uriFromCursor = getUriFromCursor(mContext, cursor); + if (ringtoneUri.equals(uriFromCursor)) { return cursor.getPosition(); } }