我有一段代码,使用2级图像加载来加载来自SD卡的图像。
首先,我使用方法BitmapFactory.decodeStream
来解码图像边界,然后使用它来真正加载(采样)图像。
这是我的方法。我认为它源自我有一天在这里看到的一个例子,但我不记得这个帖子。
public static Bitmap decodeSampledBitmapFromStream(Context c, Uri uri, int reqWidth, int reqHeight) throws IOException {
FileInputStream fis = getSourceStream(uri, c);
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeStream(fis, null, options);
options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
options.inJustDecodeBounds = false;
fis = getSourceStream(uri, c);
return BitmapFactory.decodeStream(fis, null, options);
}
它总能在真实设备上完美运行,但现在我需要在AVD中运行一些测试,但当我点击return BitmapFactory.decodeStream(fis, null, options)
行(第二个decodeStream
)时,我收到此错误:
java.io.IOException: read failed: EBADF (Bad file number)
设置了读/写SD卡权限。
应该做什么?