当前位置: 首页 > 知识库问答 >
问题:

BitmapFactory:无法解码流:java.io.FileNotFoundException

唐和洽
2023-03-14
Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
                    cursor.moveToFirst();
                    int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                    String picturePath = cursor.getString(columnIndex);
                    cursor.close();
                    MyImage image = new MyImage();
                    image.setTitle("Test");
                    image.setDescription("test choose a photo from gallery and add it to " + "list view");
                    image.setDatetime(System.currentTimeMillis());
                    image.setPath(picturePath); 
BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0/WhatsApp/Media/WhatsApp Images/IMG-20170302-WA0012.jpg: open failed: EACCES (Permission denied)

如何解决它。请帮助我。提前谢谢。

共有1个答案

能修谨
2023-03-14

它的权限问题,您需要在清单中为外部读取存储添加权限,然后在您能够使用它之后,如果您使用的是6.0以上的操作系统,那么您需要使用Easy权限。

用于写入:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

改为:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
private String[] galleryPermissions = {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};

if (EasyPermissions.hasPermissions(this, galleryPermissions)) {
            pickImageFromGallery();
        } else {
            EasyPermissions.requestPermissions(this, "Access for storage",
                    101, galleryPermissions);
        }
 类似资料:
  • 问题内容: 嘿,我不确定为什么每次选择图库中的图像时都会出现这种情况吗? 这是代码: 错误: 问题答案: 不要假设有文件路径。Android 4.4及更高版本即将删除它们。而且您获得的uri已经没有路径。 您仍然可以通过()或文件描述符访问文件内容。 在这里进行了解释:ContentProviders:打开一个文档(向下滚动,指向该节的链接似乎已损坏) 而且确实适用于较旧的android版本。

  • 我有一个定义权限的文件。该代码适用于较低版本的android,但8.0及更高版本不适用。所以我明确地要求进行自我许可检查。这段代码昨天还在工作,但突然我再次获得了相同的权限拒绝错误。

  • 我正试图从我的数据库联机获取图片,在我的“ImageLink”中,这是我表中的datafield,我把我上传的图片的url放在那里,但不幸的是,它给了我这个错误。 以下是我在OnPostExecute中的代码:

  • 问题内容: 我试图在线从数据库中的表中的数据字段“ imagelink”中获取图片,我将上传的图片的网址放在此处,但不幸的是,它给了我这个错误。 这是我在onPostExecute中的代码: 问题答案: 使用代替。

  • 问题内容: 我正在创建一个简单的应用程序拍照。这是我的代码 如您所见,我已经在末尾和logcat中(以及)中添加了此错误代码: 猜猜该目录是否存在? spoler警报 ,确实如此。而且它不像是在之后创建图片。我真的不明白我在做什么错。一切正常,除非实际上必须显示照片,然后才不显示照片。只是空白。就像WTF M8一样,我只是想尽我所能,而不必发疯。 问题答案: 替换为。 需要一个路径,而不是uri字