繁体   English   中英

USB驱动器上的文件的MediaStore.Audio.Media.DATA为空

[英]MediaStore.Audio.Media.DATA is empty for files on USB-Drive

我正在通过搜索音乐文件

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中文件的content-URI(即content:// media / external / audio / media / 120),而不能使用/ mnt / USB中文件的content-URI (即content:// media / external / audio / media / 530)。

文件还可以,当我给Mediaplayer绝对路径即/mnt/USB/testfile.mp3时,我可以正常播放它们

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

有人有主意吗?

谢谢

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

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

哪里

  • MY_COLUMNS是一个String [],其中包含我的列名
  • SORT_ORDER是我的排序顺序选项

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM