Как декодировать растровые изображения из каталога активов в Android 7?
Мое приложение хорошо работает на версиях Android до Marshmallow. В Android 7 не удается загрузить изображения из каталога активов.
Мой код:
private Bitmap getImage(String imagename) {
// Log.dd(logger, "AsyncImageLoader: " + ORDNER_IMAGES + imagename);
AssetManager asset = context.getAssets();
InputStream is = null;
try {
is = asset.open(ORDNER_IMAGES + imagename);
} catch (IOException e) {
// Log.de(logger, "image konnte nicht gelesen werden: " + ORDNER_IMAGES + imagename);
return null;
}
// First decode with inJustDecodeBounds=true to check dimensions
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeStream(is, null, options);
// Calculate inSampleSize
options.inSampleSize = calculateInSampleSize(options, PW, PH);
// Decode bitmap with inSampleSize set
options.inJustDecodeBounds = false;
// Lesen des Bitmaps in der optimierten Groesse
return BitmapFactory.decodeStream(is, null, options);
}
В результате (только Android 7) BitmapFactory.decodeStream
равно нулю. Он корректно работает со старыми API Android.
В режиме отладки я вижу следующее сообщение:
09-04 10:10:50.384 6274-6610/myapp D/skia: --- SkAndroidCodec::NewFromStream вернул null
Может ли кто-нибудь сказать мне причину и как исправить кодировку?
Изменить: тем временем я обнаружил, что удаление первого BitmapFactory.decodeStream с inJustDecodeBounds=true впоследствии приводит к успешному BitmapFactory.decodeStream с inJustDecodeBounds=false. Не знаю в чем причина и не знаю чем заменить измерение размера растрового изображения.