首页 > 解决方案 > Android,FileNotFound 异常,但被 Glide 发现没有问题。问题是什么?

问题描述

使用 Glide,以下指向 png 文件的 uri 路径可以毫无问题地加载。在 Android 中,以下代码导致“找不到文件异常”。为什么?我需要对 uri 做什么才能使其在 Android 中“无处不在”地工作?

uri = content://com.android.providers.media.documents/document/image%3A11322,由默认文件选择器给出,以编程方式使用。

FileInputStream in = null;
            try {
                in = new FileInputStream(new File(uri));
            } catch (FileNotFoundException e) {

使用 BitMapFactory.decodeFile(uri) 更糟糕,因为它也给出了相同的异常,因为它在 path = content:/com.android... 上找不到文件。重要提示:请注意,无论出于何种原因,BitmapFactory 删除了两个斜杠之一。一个错误?

感谢您提供的任何帮助,可以将这项工作从两天的“寻找并找到”解决方案转换为预期的两分钟工作。我必须说,Android 包含数量惊人的内置陷阱。

标签: androidfilesystems

解决方案


您不能FileInputStream在内容方案 uri 上打开一个。

而是在 uri 上打开一个InputStream

InputStream is = getContentResolver().openInputStream(uri);

您可以像以前一样使用流。

BitmapFactory.decodeStream(is);

推荐阅读