Java tutorial
//package com.java2s; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.net.URL; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.PixelFormat; import android.graphics.drawable.Drawable; import android.os.Environment; public class Main { private static ExecutorService executorService = Executors.newFixedThreadPool(1); public static void savePic2SDBadge(final String url, final String path, final String folder) { executorService.submit(new Runnable() { @Override public void run() { try { final Drawable drawable = Drawable.createFromStream(new URL(url).openStream(), "image.png"); savePic2SD(drawableToBitmap(drawable), path, folder); } catch (Exception e) { throw new RuntimeException(e); } } }); } public static void savePic2SD(Bitmap bitmap, String path, String folder) { boolean sdCardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED); if (sdCardExist) { File fileDir = new File(folder); if (!fileDir.exists()) { fileDir.mkdir(); } } File file = new File(path); try { FileOutputStream out = new FileOutputStream(file); if (bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out)) { out.flush(); out.close(); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static Bitmap drawableToBitmap(Drawable drawable) { Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565); Canvas canvas = new Canvas(bitmap); drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); drawable.draw(canvas); return bitmap; } }