MediaStore.Audio.Media.DATA对于USB-Drive上的文件是空的

时间:2012-03-28 18:23:30

标签: android media-player mediastore

我正在通过

搜索音乐文件
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);

/ mnt / sdcard上的文件一切正常,但不幸的是,/ mnt / USB数据中的文件似乎是空的。

更糟糕的是,媒体播放器使用/ mnt / sdcard中文件的内容URI(即content:// media / external / audio / media / 120),但不使用/中文件的内容URI mnt / USB(即内容:// media / external / audio / media / 530)。

文件没问题,当我给媒体播放器提供绝对路径时,我可以很好地播放它们,即/mnt/USB/testfile.mp3

甚至更奇怪:从USB驱动器上的文件中读取专辑,艺术家,标题等没有问题

有人有想法吗?

谢谢

1 个答案:

答案 0 :(得分:0)

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

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

其中

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