我正在通过
搜索音乐文件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驱动器上的文件中读取专辑,艺术家,标题等没有问题
有人有想法吗?
谢谢
答案 0 :(得分:0)
我问自己同样的问题,但我没有找到媒体商店包含空数据行的原因。 我想到的是通过不选择带有空数据字段的项目(过滤空数据源),在查询中向媒体库添加“where子句”。
Cursor cursor = managedQuery(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
MY_COLUMNS,
MediaStore.Audio.Media.DATA + "<> ''",
null,
SORT_ORDER);
其中