我目前通过创建一个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();
}
}
}
答案 0 :(得分:0)
在Android中,所有与媒体文件相关的数据都保存在MediaStore数据库中。因此,有了URI,您可以查询MediaStore数据库并检索文件路径。请参考这个问题: