Android:如何访问,复制和操作音乐文件

时间:2014-05-20 22:18:38

标签: android android-intent android-file mediastore

我目前通过创建一个Intent

来访问音乐文件
Intent intent = new Intent();
intent.setType("audio/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Audio "), MUSIC_CODE);

当媒体选择器出现时,我可以成功选择一个文件并提取相应的URI

@Override
protected void onActivityResult (int requestCode, int resultCode, Intent data){
    if(requestCode == MUSIC_CODE){
        if(resultCode == RESULT_OK){
            //uri.getPath()
        }
    }

    super.onActivityResult(requestCode, resultCode, data);
}

使用URI的路径(例如:/document/primary:music/filename.ext),如何实际访问该文件以对其进行操作或复制?在此先感谢,任何链接或提示都表示赞赏!

编辑:我尝试从URI获取真实路径,但没有成功(方法不断返回null):

public String getRealPathFromURI(Uri contentUri) {
    Cursor cursor = null;
    try { 
        String[] proj = { MediaStore.Audio.Media.DATA };
        cursor = getContentResolver().query(contentUri,  proj, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    }
    finally {
        if (cursor != null) {
            cursor.close();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

在Android中,所有与媒体文件相关的数据都保存在MediaStore数据库中。因此,有了URI,您可以查询MediaStore数据库并检索文件路径。请参考这个问题:

Get filename and path from URI from mediastore