0

我正在尝试获取 SD 卡上声音文件的完整路径。

这会启动声音选择器 - 然后我使用 Play Music 应用程序选择一个文件

    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_PICK);
    intent.setData(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);
    startActivityForResult(intent, RESULT_SOUNDPICKER);

关于活动结果,我正在尝试获取完整路径

case RESULT_SOUNDPICKER: {
    Log.d("TAG", "onActivityResult "+requestCode+" "+resultCode);
        if (resultCode == RESULT_OK) 
        {
            Uri uri = data.getData();
            String filePath = uri.getPath();
            Log.d("TAG", "FilePath: "+filePath);

            // A song was picked.
            Log.d("TAG", "PickSongActivity.onActivityResult: "+data.getDataString());
        }
}

但这会返回类似的路径

//media/external/audio/media/13085

而不是保存文件的正确路径。我需要取回完整路径,因为我想用它来播放文件。

谢谢你。

解决 方法 此方法可用于获取完整路径。

private String getRealPathFromURI(Uri contentUri) {
    String[] proj = { MediaStore.Images.Media.DATA };
    CursorLoader loader = new CursorLoader(getApplicationContext(), contentUri, proj, null, null, null);
    Cursor cursor = loader.loadInBackground();
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
}
4

1 回答 1

0

我需要取回完整路径,因为我想用它来播放文件。

可能没有路径(因为它不必是文件),更不用说您可以访问的路径(因为文件不必位于您可以访问的存储上)。

MediaPlayerUri可以直接使用 a,所以我建议走那条路。

于 2014-02-09T19:03:11.737 回答