2012-03-28 134 views
0

我通过MediaStore.Audio.Media.DATA为空的USB驱动器文件

proj = new String[] {[...], 
        MediaStore.Audio.Media.DATA 
        }; 
Cursor musiccursor = context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,proj, MediaStore.Audio.Media.IS_MUSIC + "=1", null, null); 

[...] 

int ixdata  = musiccursor.getColumnIndex(MediaStore.Audio.Media.DATA); 

[...] 

while(musiccursor.moveToNext()) { 
    [...] 
    String data  = musiccursor.getString(ixdata); 

搜索Musicfiles与在/ mnt/SD卡的一切工作得很好,但不幸的文件在/ mnt下的文件/ USB数据似乎是空的。

更糟糕的是,mediaplayer与/ mnt/sdcard中的文件的内容URI(即content:// media/external/audio/media/120)一起工作,而不与内容中的文件的URI/mnt/USB(即content:// media/external/audio/media/530)。

的文件是正常的,我可以发挥他们很好,当我给媒体播放器IE浏览器/mnt/USB/testfile.mp3

甚至怪异的绝对路径:专辑,艺术家,标题等被读取没有问题从USB驱动器上的文件

任何人的想法?

感谢

回答

0

我问自己同样的问题,但我没找到为什么mediastore包含空数据行的原因。 我想到的是通过不选择具有空数据字段的项目(过滤空数据源),在查询中向该媒体库添加“where子句”。

Cursor cursor = managedQuery(
    MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, 
    MY_COLUMNS, 
    MediaStore.Audio.Media.DATA + "<> ''", 
    null, 
    SORT_ORDER); 

其中

  • MY_COLUMNS是String []包含我columns'names
  • SORT_ORDER是我的排序顺序选择