Thursday 1 August 2013

download image from url to sd card in android


download image from URL to sd card in android

             Here, I have added coding for download image from url and store in sdcard in android.
For that you need two permission

1) Internet permission
2)Write External storage

*) And you have to you async task to download image.

Then Store your url in String;

like String url="yourImageURL";

DownloadImage.Java



public class webview extends Activity {
  
    String image_URL=Dec.img_url;
  
    String extStorageDirectory;
    String sdCard;
    Bitmap bitmap;
    File file;
    String savedFilePath;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
      
        Button buttonSave = (Button)findViewById(R.id.save);

        ImageView bmImage = (ImageView)findViewById(R.id.image);
        buttonSave.setOnClickListener(new OnClickListener()
        {
          
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                myAsyncTask myWebFetch = new myAsyncTask();
                myWebFetch.execute();
            }
        });
    }
  
    class myAsyncTask extends AsyncTask<Void, Void, Void>    {
        TextView tv;
        public ProgressDialog dialog;
        myAsyncTask()  
        {
            dialog = new ProgressDialog(webview.this);
            dialog.setMessage("Loading news...");
            dialog.setCancelable(true);
            dialog.setIndeterminate(true);
        }
        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
            dialog.dismiss();

        }
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            dialog.show();
        }
        protected Void doInBackground(Void... arg0) {
            try {
                //set the download URL, a url that points to a file on the internet
                //this is the file to be downloaded
                URL url = new URL(url);

                //create the new connection
                HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

                //set up some things on the connection
                urlConnection.setRequestMethod("GET");
                urlConnection.setDoOutput(true);

                //and connect!
                urlConnection.connect();

                //set the path where we want to save the file
                //in this case, going to save it on the root directory of the
                //sd card.
                File SDCardRoot = Environment.getExternalStorageDirectory();
                //create a new file, specifying the path, and the filename
                //which we want to save the file as.
                File file = new File(SDCardRoot,"somefile.jpg");

                //this will be used to write the downloaded data into the file we created
                FileOutputStream fileOutput = new FileOutputStream(file);

                //this will be used in reading the data from the internet
                InputStream inputStream = urlConnection.getInputStream();

                //this is the total size of the file
                int totalSize = urlConnection.getContentLength();
                //variable to store total downloaded bytes
                int downloadedSize = 0;

                //create a buffer...
                byte[] buffer = new byte[1024];
                int bufferLength = 0; //used to store a temporary size of the buffer

                //now, read through the input buffer and write the contents to the file
                while ( (bufferLength = inputStream.read(buffer)) > 0 ) {
                    //add the data in the buffer to the file in the file output stream (the file on the sd card
                    fileOutput.write(buffer, 0, bufferLength);
                    //add up the size so we know how much is downloaded
                    downloadedSize += bufferLength;
                    //this is where you would do something to report the prgress, like this maybe
                    //updateProgress(downloadedSize, totalSize);

                }
                //close the output stream when done
                fileOutput.close();

            //catch some possible errors...
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            // see http://androidsnippets.com/download-an-http-file-to-sdcard-with-progress-notification
            return null;
        } 
    }

}



1 comment:

GURJEET said...

Is your image downloading with this code?