0

这是我的代码,获取歌曲列表:如何获取音频路径播放音频文件?

List<String> getsonglist() { 

     List<String> songlist = new ArrayList<>(); 
     ContentResolver contentResolver = getContentResolver(); 
     Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; 

     Cursor cursor = contentResolver.query(uri, null, null, null, null); 
     if (cursor == null) { 
      // query failed, handle error. 
     } else if (!cursor.moveToFirst()) { 
      // no media on the device 
     } else { 
      int titleColumn = cursor.getColumnIndex(android.provider.MediaStore.Audio.Media.TITLE); 
      int idColumn = cursor.getColumnIndex(android.provider.MediaStore.Audio.Media._ID); 
      do { 
       long thisId = cursor.getLong(idColumn); 
       String thisTitle = cursor.getString(titleColumn); 
       // ...process entry... 

       songlist.add(thisTitle); 
      } while (cursor.moveToNext()); 
     } 


     return songlist; 
    } 

我想通过给其音乐播放器()方法路径播放这首歌。

回答

2

你可以得到完整的路径是这样的:

String fullPath = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA)); 

所以,你的函数是:

List<String> getsonglist() { 

    List<String> songlist = new ArrayList<>(); 
    ContentResolver contentResolver = getContentResolver(); 
    Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; 

    Cursor cursor = contentResolver.query(uri, null, null, null, null); 
    if (cursor == null) { 
     // query failed, handle error. 
    } else if (!cursor.moveToFirst()) { 
     // no media on the device 
    } else { 
     do { 

      String fullPath = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA)); 
      // ...process entry... 
      Log.e("Full Path : ", fullPath); 


      songlist.add(fullPath); 
     } while (cursor.moveToNext()); 
    } 


    return songlist; 
} 
0

试试这个

String fullPath = cursor.getString(cursor.getColumnIndex("_data"));