0

我正在通过以下方式搜索音乐文件

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),但不使用 /mnt/USB 中文件的内容 URI (即内容://媒体/外部/音频/媒体/530)。

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

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

任何人的想法?

谢谢

4

1 回答 1

0

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

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

在哪里

  • MY_COLUMNS 是一个 String[] 包含我的列名
  • SORT_ORDER 是我的排序选项
于 2012-07-13T15:53:48.403 回答