package com.common.utils; import android.app.ProgressDialog; import android.content.Context; import android.os.AsyncTask; import android.os.Environment; import android.util.Log; import java.io.BufferedInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import java.net.URLConnection; /** * Created by Sanjay on 2/2/2015. */ @SuppressWarnings("DefaultFileTemplate") class DownloadFile extends AsyncTask<String, String, String> { private final String strurl; private final Context mContext; private final String filename; private final boolean download; private float filesize; private ProgressDialog pDialog; DownloadFile(Context context, String url, String filename, boolean download) { strurl = url; mContext = context; this.filename = filename; this.download = download; } private static File getOutputMediaFile(String filename) { // External sdcard location File mediaStorageDir = new File(Environment.getExternalStorageDirectory(), Common.IMAGE_DIRECTORY_NAME); // Create the storage directory if it does not exist if (!mediaStorageDir.exists()) { if (!mediaStorageDir.mkdirs()) { Log.d(Common.IMAGE_DIRECTORY_NAME, "Oops! Failed create " + Common.IMAGE_DIRECTORY_NAME + " directory"); return null; } } return new File(mediaStorageDir.getPath() + File.separator + filename); } @Override protected void onPreExecute() { super.onPreExecute(); pDialog = new ProgressDialog(mContext); pDialog.setMessage("Please Wait.."); pDialog.show(); } @Override protected String doInBackground(String... params) { try { URL url = new URL(strurl); System.out.println("5555 get size for -" + url); URLConnection urlConnection; urlConnection = url.openConnection(); urlConnection.connect(); filesize = urlConnection.getContentLength() / 1024f; filesize = filesize / 1024f; System.out.println("size of file:- " + filesize); if (download) { InputStream input = new BufferedInputStream(url.openStream()); @SuppressWarnings("ConstantConditions") OutputStream output = new FileOutputStream(getOutputMediaFile(filename)); byte data[] = new byte[1024]; long total = 0; int count; while ((count = input.read(data)) != -1) { total += count; output.write(data, 0, count); } output.flush(); output.close(); input.close(); } } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); if (pDialog != null && pDialog.isShowing()) { pDialog.dismiss(); } try { if (!download) Common.showAlertDialog(mContext, "File Size", "Size of file at " + strurl + " is " + filesize + " MB", false); else //noinspection ConstantConditions Common.showAlertDialog(mContext, "File Path", "File stored at " + getOutputMediaFile(filename).getPath(), false); } catch (NullPointerException e) { e.printStackTrace(); } } }