Android - сохранить изображение на SD, а затем загрузить изображение - PullRequest
1 голос
/ 20 марта 2011

Я быстро разработал фрагмент кода, который загружается с указанного URL-адреса, а затем сохраняет его на SD-карту, но не сохраняет на SD-карте.

URL myFileUrl = new URL( Image_HTML);
String filepath = Environment.getExternalStorageDirectory().getAbsolutePath(); 
try {
    HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection(); 
    conn.setDoInput(true); 
    conn.connect(); 
    InputStream is = conn.getInputStream(); 
    bm = BitmapFactory.decodeStream(is); 
    FileOutputStream fos = new FileOutputStream(filepath+image_name); 
    bm.compress(CompressFormat.PNG, 100, fos); 
    fos.flush(); 
    fos.close(); 

    bm = BitmapFactory.decodeFile(filepath+image_name);
    image_loader_view.setImageBitmap(bm);

} catch (FileNotFoundException e) {

    e.printStackTrace();
    Log.i("Hub", "FileNotFoundException: "+ e.toString());

} catch (IOException e) {

    e.printStackTrace();
    Log.i("Hub", "IOException: "+ e.toString());
}

Я пытался создатьэтот код как можно проще, и я также активировал EXTERNAL.STORAGE.WRITE в манифесте Android.

1 Ответ

1 голос
/ 20 марта 2011

Пара вещей.

Когда вы используете FileOutputStream, вы должны убедиться, что каталог, в который вы пытаетесь записать, создан, прежде чем пытаться записать в него файл.Если нет, вы должны создать его.Это можно сделать с помощью метода mkdirs() класса File.

Далее Я не уверен, что требуется вызов getAbsolutePath из-за типа файловой системы, которую использует Android.Раньше мне никогда не приходилось использовать его для сохранения на SD.

Я бы попробовал это и посмотрел, решит ли кто-нибудь из них это для вас.

...