我正在创建一个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中打开图像都不是问题。
答案 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" />
您的权限得到体现。
请不要忘记向用户请求运行时权限。