diff options
| author | 2021-03-24 11:47:59 +0800 | |
|---|---|---|
| committer | 2021-06-14 11:41:45 +0000 | |
| commit | 19035013809706bd9f62cef3cede84841306ecbb (patch) | |
| tree | a087d83a9032a28f07dddadfad6ff9db6096ab80 | |
| parent | 05081aa3b0849e07134d0a9147d4f85b58dfe91d (diff) | |
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
| -rw-r--r-- | media/java/android/media/RingtoneManager.java | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/media/java/android/media/RingtoneManager.java b/media/java/android/media/RingtoneManager.java index e2e13b048cf7..be6ff1baadd6 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(); } } |