Android Mediastore.Audio.Media.DATA不返回任何内容

Android Mediastore.Audio.Media.DATA不返回任何内容,android,Android,我尝试用光标和内容解析器列出所有音频文件,我得到歌曲标题、歌曲艺术家和Id,但问题是我无法获得路径,当我尝试在Toast中显示它时,它不会返回任何内容 谢谢你的帮助 以下是代码和我如何获得歌曲: ContentResolver musicResolver = this.getContentResolver(); Uri musicUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; Cursor musicCursor = mus

我尝试用光标和内容解析器列出所有音频文件,我得到歌曲标题、歌曲艺术家和Id,但问题是我无法获得路径,当我尝试在Toast中显示它时,它不会返回任何内容

谢谢你的帮助

以下是代码和我如何获得歌曲:

ContentResolver musicResolver = this.getContentResolver();
    Uri musicUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; 
    Cursor musicCursor = musicResolver.query(musicUri,
            null,
            null,
            null,
            MediaStore.Audio.Media.TITLE + " ASC"); 



    if(musicCursor!=null && musicCursor.moveToFirst()){
        //get columns
        int idColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media._ID);
        int titleColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.TITLE);
        int artistColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.ARTIST);
        int pathColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.DATA);

        //add songs to list
        do {
            long thisId = musicCursor.getLong(idColumn);
            String thisTitle = musicCursor.getString(titleColumn);
            String thisArtist = musicCursor.getString(artistColumn);
            String thisPath = musicCursor.getString(pathColumn);
            arrayChansons.add(new Chanson(thisId, thisTitle, thisArtist, thisPath));
        }
        while (musicCursor.moveToNext());
        musicCursor.close();

您在哪里看到文档说明由
MediaStore.Audio.Media.DATA
指示的列将包含文件路径?(你可能是对的,我只是想了解细节。)我在这个论坛和这个链接上也看到了:这里写着:“int fileColumn=cursor.getColumnIndex(MediaStore.Audio.Media.DATA);第一个是包含实际音频文件路径的列的索引。我们通过传入表示该列的常量android.provider.MediaStore.audio.Media.DATA来获得上述索引“指定所需的列,而不是为列传入
null
,看看这是否有帮助。我已经指定了我想要的列,但没有任何更改。您在哪里看到说明由
MediaStore.Audio.Media.DATA
指示的列将包含文件路径的文档?(你可能是对的,我只是想了解细节。)我在这个论坛和这个链接上也看到了:这里写着:“int fileColumn=cursor.getColumnIndex(MediaStore.Audio.Media.DATA);第一个是包含实际音频文件路径的列的索引。我们通过传入表示该列的常量android.provider.MediaStore.audio.Media.DATA来获得上述索引“指定所需的列,而不是为列传入
null
,看看这是否有帮助。我已经指定了我想要的列,但没有任何更改。