Открытие файла из папки с данными в android
У меня есть файл .gif внутри папки с ресурсами, например, эти активы /Files/android.gif. когда я пытаюсь открыть файл, он выдает исключение во второй строке
AssetManager mngr=getAssets();
InputStream is2=mngr.open("Files/android.gif");
Так что я пытаюсь открыть файл изображения, несмотря на то, что тот же самый код работает, если я пытаюсь открыть текстовый файл?
что может быть проблемой здесь.
Ответы
Ответ 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