访问存储在android中/ storage / emulated / 0目录下的文件时的FileNotFoundException

时间:2013-07-17 23:55:37

标签: android http-post sd-card filenotfoundexception

我试图通过POST HTTP方法将保存在android中的/storage/emulated/0/Videos/someVideo.3gp中的录制视频文件传递给远程服务器。我使用this作为以FileBody格式将视频文件传递到远程服务器的方法。但是,当我尝试执行httpClient.execute(request)命令时,它只是继续抛出 FileNotFoundException

所以,我不明白为什么视频文件无法被外界访问,因为我已使用getExternalStorageDirectory()将其保存到SD卡。我还为清单文件添加了写权限。

P.S。我正在使用Nexus 7来测试它。请帮忙..

提前致谢!

1 个答案:

答案 0 :(得分:1)

在执行httpClient.execute(request)之前是否检查文件的存在?

引用您所关注的问题:

File sourceFile = new File(sourceFileUri);
if (!sourceFile.isFile()) {
Log.e("Huzza", "Source File Does not exist");
return 0;
}

修改:
可能是你没有在onActivityResult(...) method上正确地从Uri转换路径 我正在分享获取正确路径的代码,它在我的应用程序中运行良好。

String videoPath = "";
try 
{ 
 String[] filePathColumn = { MediaStore.Video.Media.DATA };
 Cursor cursor = getContentResolver().query(selectedVideoUri,
 filePathColumn, null, null, null);
 cursor.moveToFirst();
 int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
 videoPath = cursor.getString(columnIndex);
 cursor.close();
} catch (Exception e) {
 Log.e(TAG,
 "Error parsing Video path = " + e.toString());
}