Android 托管查询的问题

Android 托管查询的问题,android,cursor,mediastore,Android,Cursor,Mediastore,我正在尝试编写一个应用程序,它列出了sd卡上的所有mp3文件 String[] columns = new String[] { MediaStore.Audio.Media._ID, MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.TITLE_KEY, MediaStore.Audio.Media.DATA, Medi

我正在尝试编写一个应用程序,它列出了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卡路径是:

/external/audio/media
 /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初始化错误?
谢谢

您的代码是正确的。路径/external/audio/media是内容提供者路径,而不是实际文件系统中的路径。
你确定卡上有MP3文件吗?签入音乐应用程序可以查看文件。如果你不能在那里,我有时会发现(特别是在模拟器上)索引并不总是运行。通过卸载SD卡并重新安装(设置/SD卡和电话存储/卸载SD卡),强制SD重新索引所有媒体。

谢谢,Nic!重新安装有帮助!现在一切正常。