From 762a2f365a99be40fd2e93cab91d87a7e7ba41a0 Mon Sep 17 00:00:00 2001 From: Kieran Clancy Date: Fri, 16 Nov 2012 09:09:49 +1030 Subject: [PATCH] Ensure file paths are not empty (avoids ICS bug) --- src/ch/blinkenlights/android/vanilla/MediaAdapter.java | 2 +- src/ch/blinkenlights/android/vanilla/MediaUtils.java | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/ch/blinkenlights/android/vanilla/MediaAdapter.java b/src/ch/blinkenlights/android/vanilla/MediaAdapter.java index 06a66366..e9fb976d 100644 --- a/src/ch/blinkenlights/android/vanilla/MediaAdapter.java +++ b/src/ch/blinkenlights/android/vanilla/MediaAdapter.java @@ -255,7 +255,7 @@ public class MediaAdapter String sort = String.format(mSortValues[mode], sortDir); if (mType == MediaUtils.TYPE_SONG || forceMusicCheck) - selection.append("is_music!=0"); + selection.append("is_music AND length(_data)"); if (constraint != null && constraint.length() != 0) { String[] needles; diff --git a/src/ch/blinkenlights/android/vanilla/MediaUtils.java b/src/ch/blinkenlights/android/vanilla/MediaUtils.java index 32e23afc..c0e5db1e 100644 --- a/src/ch/blinkenlights/android/vanilla/MediaUtils.java +++ b/src/ch/blinkenlights/android/vanilla/MediaUtils.java @@ -144,7 +144,7 @@ public class MediaUtils { selection.append('='); selection.append(id); - selection.append(" AND is_music!=0"); + selection.append(" AND is_music AND length(_data)"); if (select != null) { selection.append(" AND "); @@ -365,7 +365,8 @@ public class MediaUtils { { if (sSongCount == -1) { Uri media = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; - String selection = MediaStore.Audio.Media.IS_MUSIC + "!=0"; + String selection = MediaStore.Audio.Media.IS_MUSIC; + selection += " AND length(_data)"; Cursor cursor = resolver.query(media, new String[]{"count(_id)"}, selection, null, null); if (cursor == null) { sSongCount = 0; @@ -391,7 +392,8 @@ public class MediaUtils { sRandomCacheEnd = -1; Uri media = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; - String selection = MediaStore.Audio.Media.IS_MUSIC + "!=0"; + String selection = MediaStore.Audio.Media.IS_MUSIC; + selection += " AND length(_data)"; Cursor cursor = resolver.query(media, Song.EMPTY_PROJECTION, selection, null, null); if (cursor == null || cursor.getCount() == 0) { sSongCount = 0; @@ -526,7 +528,7 @@ public class MediaUtils { DatabaseUtils.appendEscapedSQLString(selection, path); // delete the quotation mark added by the escape method selection.deleteCharAt(selection.length() - 1); - selection.append("*' AND is_music!=0"); + selection.append("*' AND is_music"); Uri media = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; QueryTask result = new QueryTask(media, projection, selection.toString(), null, DEFAULT_SORT);