我在onActivityResult
中获得了音频文件uri,但是当我从此URI获取文件时,它显示文件未找到异常,而/ directory/xxxx不是绝对路径。如何从android目录中获取绝对路径URI
这里是URI代码:Uri muri=data.getData();
我在onActivityResult
中获得了音频文件uri,但是当我从此URI获取文件时,它显示文件未找到异常,而/ directory/xxxx不是绝对路径。如何从android目录中获取绝对路径URI
这里是URI代码:Uri muri=data.getData();
后半天终于我得到了解决这一点。我从Get real path from URI, Android KitKat new storage access framework收集此链接@Paul Burke答案。
没有规定一个Uri
在onActivityResult()
返回是可以直接访问文件。 A Uri
is not necessarily a File
。
请使用openInputStream()
对ContentResolver
获取所代表的数据的InputStream
。
试试这个..
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.setType("audio/*");
startActivityForResult(i, GET_MP3);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == GET_MP3) {
Uri selectedmp3 = data.getData();
mp3_path = getpathmp3(selectedmp3);
}
private String getpathring(Uri path) {
String result;
Cursor cursor = getContentResolver()
.query(path, null, null, null, null);
if (cursor == null) {
result = path.getPath();
int name = result.lastIndexOf("/");
mp3_name = result.substring(name + 1);
} else {
cursor.moveToFirst();
int idx = cursor.getColumnIndex(MediaStore.Audio.Media.DATA);
result = cursor.getString(idx);
cursor.close();
int name = result.lastIndexOf("/");
mp3_name = result.substring(name + 1);
}
return result;
}
的mp3_path是尝试此方法后,你会get..tell我的路..
它显示光标错误 - “请确保光标在从它访问数据前正确初始化...” – 2014-09-26 14:09:33
你可以自己做,我刚才提到了一种方法来解决你的问题,它是否工作? – 2014-09-26 16:06:43
我需要发布一个音频文件到服务器。如何使用openInputStrem()请张贴一些代码 – 2014-09-26 15:11:53