我正在尝试编写应用程序,它列出了 sd 卡中的所有 mp3 文件。
String[] columns = new String[] {
MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.TITLE_KEY,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.ALBUM,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.ARTIST_ID,
MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media.TRACK
};
String uristr_t = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI.getPath();
Cursor musicCursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
columns, null, null, null);
if(musicCursor != null){
mSongs = new ArrayList<SongInfo>( musicCursor.getCount());
boolean isMediaFilesExist = musicCursor.moveToFirst();
...
sd 卡上有一些 mp3 文件,但 musicCursor.GetCount() 返回 0。我想路径不正确。EXTERNAL_CONTENT_URI 是content://media/external/audio/media
,它的路径是:
/external/audio/media
但我的 sd 卡的路径是:
/mnt/sdcard
我尝试手动设置 Uri:
String uriStr = "content://" + Environment.getExternalStorageDirectory().getPath();
Uri sdCardUri = Uri.parse(uriStr);
Cursor musicCursor = managedQuery(sdCardUri, columns, null, null, null);
在这种情况下,Uri 为content:///mnt/sdcard
,但在 managedQuery 之后 musicCursor 为空。也许 uriStr 的格式不正确并且 Uri 初始化错误?谢谢!