Открытие файла из папки активов в Android - PullRequest
16 голосов
/ 19 декабря 2009

У меня есть файл .gif внутри папки активов, такой как assets / Files / android.gif. при попытке открыть файл выдает исключение во второй строке

AssetManager mngr=getAssets();
InputStream is2=mngr.open("Files/android.gif");

Итак, я пытаюсь открыть файл изображения, несмотря на то, что тот же код работает, если я пытаюсь открыть текстовый файл? в чем может быть проблема тут.

Ответы [ 6 ]

31 голосов
/ 14 декабря 2011

Эти линии работают отлично -

InputStream assetInStream=null;

try {
    assetInStream=getAssets().open("icon.png");
    Bitmap bit=BitmapFactory.decodeStream(assetInStream);
    img.setImageBitmap(bit);
} catch (IOException e) {
    e.printStackTrace();
} finally {
    if(assetInStream!=null)
    assetInStream.close();
}

Если ваше изображение очень большое, вы должны масштабировать его перед тем, как декодировать его в растровое изображение. См. Как эффективно отобразить большое изображение

4 голосов
/ 19 декабря 2009

Я подозреваю, что вы получаете жалобы на необработанное исключение типа IOException. Если это так, вам нужно поместить вызов mgr.open в блок try-catch, чтобы обработать исключение, которое может возникнуть при получении объекта InputStream.

AssetManager mngr = getAssets();
try {
    InputStream is2 = mngr.open("Files/android.gif");
} catch (final IOException e) {
    e.printStackTrace();
}
1 голос
/ 19 декабря 2009

Я считаю, что предпочтительный способ сделать это - поместить ваше изображение в каталог res / drawable. Тогда вы можете получить Drawable следующим образом:

Drawable d = Resources.getSystem().getDrawable(R.drawable.android);
1 голос
/ 19 декабря 2009

Не знаю, изменились ли вещи или нет, но у меня было приложение в Android 1.1, которое открывало значки, чтобы затем отображать их в виде, и я сделал это так:

BufferedInputStream buf = new BufferedInputStream(mContext.openFileInput(value));
Bitmap bitmap = BitmapFactory.decodeStream(buf);
0 голосов
/ 28 октября 2018

Я не верю, что gif поддерживается автоматически на Android. Попробуйте png или jpg с тем же кодом.

0 голосов
/ 05 мая 2011

Мина, у меня была такая же проблема ... У меня были изображения и XML-файл в "активах", и я мог читать XML-файл, но не изображения. После нескольких часов разочарования я наконец нашел решение!

Я разместил решение здесь: Ошибка нулевого указателя при отображении изображения из папки активов Android 2.2 SDK

...