Подтвердить что ты не робот

Открытие файла из папки с данными в android

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

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

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

4b9b3361

Ответ 1

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

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();
}

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

Ответ 2

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

AssetManager mngr = getAssets();
try {
    InputStream is2 = mngr.open("Files/android.gif");
} catch (final IOException e) {
    e.printStackTrace();
}

Ответ 3

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

BufferedInputStream buf = new BufferedInputStream(mContext.openFileInput(value));
Bitmap bitmap = BitmapFactory.decodeStream(buf);

Ответ 4

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

Drawable d = Resources.getSystem().getDrawable(R.drawable.android);

Ответ 5

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

Я разместил решение здесь: Проблема с нулевым указателем, отображающая изображение из папки с данными Android 2.2 SDK