BitmapFactory.decodeFile()返回null

时间:2013-05-13 21:00:23

标签: android file bitmap bitmapfactory

我正在创建一个Android应用,您可以将图像从位置x复制到位置y。复制完成后,我希望在ImageView中看到图片。 我知道图像的位置,但无论我尝试什么,我都无法创建它的bitmap对象。

造成我问题的一行是:

BitmapFactory.decodeFile(dir+s);

dir = getCacheDir().getAbsolutePath()+"/images/";

s = file name (eg. 1275123123.jpg)

如果我使用相同路径创建File对象,并调用f.isFile(),则会返回true

在android或windows中打开图像都不是问题。

3 个答案:

答案 0 :(得分:6)

您是否忘记添加SD卡访问权限READ_EXTERNAL_STORAGE和/或WRITE_EXTERNAL_STORAGE?

答案 1 :(得分:2)

我有类似的问题,最终解决了它的问题是创建FileInputStream(...)并解码流。这是我使用的代码,我将其更改为适合您的情况:

File location = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+ "/images");
File dest = new File(location, fileName + ".JPG");
FileInputStream fis;
fis = new FileInputStream(dest);
Bitmap img = BitmapFactory.decodeStream(fis);

答案 2 :(得分:-1)

您必须添加

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

您的权限得到体现。

请不要忘记向用户请求运行时权限。