如何获取用户选择的音频文件

lok*_*oko 0 audio android android-intent

我想要获取我选择的实际音频文件的句柄.为了选择音频文件,我的意图如下:

Intent audioIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(audioIntent , 0);
Run Code Online (Sandbox Code Playgroud)

它允许我从弹出窗口中选择音频文件但是如何获取我选择的文件?

在图像的情况下,我有:

bitmap = android.provider.MediaStore.Images.Media.getBitmap(getContentResolver(), intent.getData());
Run Code Online (Sandbox Code Playgroud)

音频文件有类似的东西吗?

lok*_*oko 5

Intent galleryIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(galleryIntent, AUDIO_GALLERY_REQUEST_CODE);

if (requestCode == AUDIO_GALLERY_REQUEST_CODE) {
    if (resultCode == Activity.RESULT_OK) {
        try {
          String path = _getRealPathFromURI(context, intent.getData());
          File audio = new File(path);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

private String _getRealPathFromURI(Context context, Uri contentUri) {
    String[] proj = { MediaStore.Audio.Media.DATA };
    CursorLoader loader = new CursorLoader(context, contentUri, proj, null, null, null);
    Cursor cursor = loader.loadInBackground();
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
}
Run Code Online (Sandbox Code Playgroud)