Android-从uri加载照片

时间:2019-11-30 18:18:00

标签: java android android-studio mobile glide

我正在尝试通过Uri将图像上传到ima​​geview,这是行不通的。

java.io.FileNotFoundException: /file:/data/user/0/com.maksu.aquarium/cache/cropped6681458112782885202.jpg (No such file or directory)

我收到上述错误。当我检查时,我看到图片存在。 My photo path

这是我上传照片的方式:

     Uri profileUri = Uri.fromFile(new File("file:///data/user/0/com.maksu.aquarium/cache/cropped6681458112782885202.jpg"));

Glide.with(this).load(profileUri).into(akvaryumDialogResim);

2 个答案:

答案 0 :(得分:2)

首先,永远不要硬编码路径。为了这个答案的目的,我会坚持使用您的硬编码值,但是您确实需要一种更好的方式来处理文件。例如,对于许多用户而言,您的硬编码路径将是错误的。

第二,file:///data/user/0/com.maksu.aquarium/cache/cropped6681458112782885202.jpg不是文件系统路径。它是Uri。 Android基于Linux,其文件系统路径以/开头。 file://Uri方案,非常类似于此网页的URL中使用的https://Uri方案。

因此,可以使用:

Uri profileUri = Uri.parse("file:///data/user/0/com.maksu.aquarium/cache/cropped6681458112782885202.jpg");

或使用:

Uri profileUri = Uri.fromFile(new File("/data/user/0/com.maksu.aquarium/cache/cropped6681458112782885202.jpg"));

答案 1 :(得分:2)

要访问缓存文件夹中的文件,可以使用Context.getCacheDir()方法,而不是硬编码完整路径。因此,尝试:

Uri profileUri = Uri.fromFile(new File(geCacheDir(), "cropped6681458112782885202.jpg"));

Glide.with(this).load(profileUri).into(akvaryumDialogResim);