从库中加载图像不起作用两次

时间:2017-06-22 16:06:14

标签: android image bitmap gallery mediastore

我从图库中选择了一张图片。现在我将它加载到临时文件中,并可以在ImageView中显示它。一切正常。

Uri uri = data.getData();

File file = new File(uri+"");

String fileName = file.getName();
String filePath = file.getParent();

Bitmap bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), uri);

//here come's the code to save the temp-file and so on

在fileName和filePath中,我保存了名称和路径供以后使用。因为如果用户想要保存图像,我想制作它们的副本。

URI shown in the debugger: content:/media/external/images/media/12345
filePath:  content:/media/external/images/media
fileName:  12345

如果我想保存图像,我使用fileName和filePath来构建URI,并希望像上面那样做。但它不起作用。我从MediaStore获得了一个FileNotFoundException“无内容提供者”。嗯 - 在我删除应用程序进行全新测试之前,出现“没有这样的文件或目录”,我认为我使用READ_EXTERNAL_STORAGE权限消除了“无内容提供者”异常。

Uri uri = Uri.parse(filePath +"/"+ fileName);
Bitmap bitmap = MediaStore.Images.Media.getBitmap(context.getContentResolver(), uri);

在这里,我还在调试器中看到了正确的URI。

有什么问题?

我在AndroidManifest中设置了权限READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE。

1 个答案:

答案 0 :(得分:0)

  

在fileName和filePath中,我保存名称和路径供以后使用

Uri不是文件,你的肯定不是文件。

  

有什么问题?

您的Uri有一个content计划。这是由ContentProvider提供的。你没有指出这个Uri的来源,但我猜它是来自ACTION_GET_DOCUMENT或类似的东西。在这种情况下,就像需要工作会话的Web URL一样,your access to the content identified by that Uri is short

如果您想要对内容进行长期访问,请将其下载到您的应用中,就像从网址下载内容一样。