我正在尝试使用此代码。
public synchronized void onActivityResult(final int requestCode, int resultCode,
final Intent data) {
String filePath = null;
if (resultCode == Activity.RESULT_OK) {
switch (requestCode) {
case RESULT_MEMORY_SAVE:
filePath = data.getDataString();
copyFileForReceipts(filePath,pathOfReceipts);
现在filePath是一个String,Debugger将其值显示为"content://media/external/images/media/133"
接下来我想尝试使用它:
sourceLocation = filePath;
File afile = new File(sourceLocation);
File bfile = new File(targetLocation + "file.jpg");
inStream = new FileInputStream(afile.getName()); //Gives exception
outStream = new FileOutputStream(bfile.getName());
它提供了FileNotFound
异常的例外。我也试过删除.getName()
。
请告诉我哪里错了。
此致
答案 0 :(得分:1)
而不是使用 setData 和 getDataString ,您应该放置文件路径并按如下方式检索它:
在结果生成活动中添加路径:
intent.putString("path", file_path);
并检索路径:
filePath = data.getString("path");
copyFileForReceipts(filePath,pathOfReceipts);
并且在进行任何进一步操作之前检查文件是否存在是一个很好的做法:
if(afile.exists()){
//do whatever you want
}