Я думал, что это не будет слишком сложно, но в течение последних нескольких часов я бился головой о стол и был бы очень признателен за помощь.По сути, я хочу получить изображение из URL-адреса, сохранить его во внутренней памяти (не на SD-карте) и иметь возможность извлечь это изображение и показать его с помощью ImageView позже.
Вот как яполучить изображения из URL-адреса и записать их в память (URL-адреса хранятся в «фото»):
String urlstring = pics[l][w];
if (urlstring != null){
try {
URL url = new URL(urlstring);
InputStream input = url.openStream();
FileOutputStream output = openFileOutput(("specimage"+l) + ("" +w+".jpg"), MODE_PRIVATE);
byte[] buffer = new byte[input.available()];
int n = input.read(buffer, 0, buffer.length);
while (n >= 0) {
output.write(buffer, 0, buffer.length);
n = input.read(buffer, 0, buffer.length);
}
output.close();
input.close();
} catch (Exception e) {
GlobalState.popupMessage(homePage, "Error", "Files could not be stored on disk");
}
}
Вот как я пытаюсь получить их (путь - это имя файла):
private Bitmap getPic(String path){
FileInputStream in;
Bitmap bMap = null;
BufferedInputStream buf;
try {
in = openFileInput(path);
buf = new BufferedInputStream(in);
byte[] bMapArray= new byte[buf.available()];
buf.read(bMapArray);
bMap = BitmapFactory.decodeStream(buf);
if (in != null) {
in.close();
}
if (buf != null) {
buf.close();
}
} catch (Exception e) {
System.out.println("excep.");
}
if (bMap == null) System.out.println("null");
return bMap;
}
Если я сделаю это, картинка не появится, но программа не вылетит.Исключение не сработало.Однако значение bMap задано как ноль.Я также получаю странное сообщение в журнале:
DEBUG / skia (19358): --- SkImageDecoder :: Factory вернул null
Пожалуйста, дайте мне знать, что я делаю неправильно.Я безрезультатно обыскивал свой мозг.Я должен упомянуть, что я делаю setImageBitmap в потоке пользовательского интерфейса.