我从图库中选择了一张图片。现在我将它加载到临时文件中,并可以在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。
答案 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。
如果您想要对内容进行长期访问,请将其下载到您的应用中,就像从网址下载内容一样。