summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristofer Ã…kersten <akersten@google.com>2019-03-20 17:05:46 -0700
committerChristofer Ã…kersten <akersten@google.com>2019-03-20 17:57:15 -0700
commit7a8ab729af71dc525911c2812ada051f489fe7a0 (patch)
treeb59d31540f8af3b4e9680221e2e8735cec605fea
parenteb94007a6bb3568630ac725d5234859c3b5dabfa (diff)
downloadUniversalMediaPlayer-7a8ab729af71dc525911c2812ada051f489fe7a0.tar.gz
Fix artist to album link on Q devices
In Q a bug in MediaStore is fixed where artist to album mapping was keyed with _id column rather than album_id. This changes so we prefer the album_id column but resort to _id if not found. Bug: 128918172 Test: Manual test on P & Q devices Change-Id: If01eb7b3d64160eb3d08c3e61f36097a9576c397
-rw-r--r--java/com/android/pump/db/AudioStore.java16
1 files changed, 11 insertions, 5 deletions
diff --git a/java/com/android/pump/db/AudioStore.java b/java/com/android/pump/db/AudioStore.java
index 9d8edf9..5acac70 100644
--- a/java/com/android/pump/db/AudioStore.java
+++ b/java/com/android/pump/db/AudioStore.java
@@ -423,14 +423,20 @@ class AudioStore extends ContentObserver {
// TODO Remove hardcoded value
Uri contentUri = MediaStore.Audio.Artists.Albums.getContentUri("external", artist.getId());
- String[] projection = {
- MediaStore.Audio.Media._ID // TODO MediaStore.Audio.Artists.Albums.ALBUM_ID
- };
+ /*
+ * On some devices MediaStore doesn't use ALBUM_ID as key from Artist to Album, but rather
+ * _ID. In order to support these devices we don't pass a projection, to avoid the
+ * IllegalArgumentException(Invalid column) exception, and then resort to _ID.
+ */
+ String[] projection = null; // { MediaStore.Audio.Artists.Albums.ALBUM_ID };
Cursor cursor = mContentResolver.query(contentUri, projection, null, null, null);
if (cursor != null) {
try {
- int albumIdColumn = cursor.getColumnIndexOrThrow(
- MediaStore.Audio.Media._ID); // TODO MediaStore.Audio.Artists.Albums.ALBUM_ID
+ int albumIdColumn = cursor.getColumnIndex(MediaStore.Audio.Artists.Albums.ALBUM_ID);
+ if (albumIdColumn < 0) {
+ // On some devices the ALBUM_ID column doesn't exist and _ID is used instead.
+ albumIdColumn = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID);
+ }
for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
long albumId = cursor.getLong(albumIdColumn);