[:en]AsynTask download image
Step 1: activity_mail.xml
Step 2. MainActivity.java
package com.example.cambridge.asynctaskdownloadimage; import android.app.ProgressDialog; import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.Toast; 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.MalformedURLException; import java.net.URL; import java.net.URLConnection; public class MainActivity extends AppCompatActivity { Button button; ImageView imageView; String image_url = "http://inventlinks.com/wp-content/uploads/2015/12/20150426_142344_7_bestshot.jpg"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button)findViewById(R.id.button); imageView = (ImageView)findViewById(R.id.image_view); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Set object DownloadTask downloadTask = new DownloadTask(); downloadTask.execute(image_url); } }); } class DownloadTask extends AsyncTask{ ProgressDialog progressDialog; @Override protected void onPreExecute() { progressDialog = new ProgressDialog(MainActivity.this); progressDialog.setTitle("Download in progress..."); progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); progressDialog.setMax(100); progressDialog.setProgress(0); progressDialog.show(); } @Override protected String doInBackground(String... params) { String path = params[0]; int file_lenght = 0; try { URL url = new URL(path); URLConnection urlConnection = url.openConnection(); urlConnection.connect(); file_lenght = urlConnection.getContentLength(); File new_folder = new File("sdcard/photoalbum"); if(!new_folder.exists()){ new_folder.mkdir(); } // Insert file File input_file = new File(new_folder,"downloaded_image.jpg"); InputStream inputStream = new BufferedInputStream(url.openStream(),8192); byte[] data = new byte[1024]; int total = 0; int count = 0; // Read file OutputStream outputStream = new FileOutputStream(input_file); // Write the outpout while ((count=inputStream.read(data))!=-1){ // update total total+= count; outputStream.write(data,0,count); int prograss = (int)total*100/file_lenght; publishProgress(prograss); } inputStream.close(); outputStream.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return "Download completed..."; } @Override protected void onProgressUpdate(Integer... values) { // Update progressBar status progressDialog.setProgress(values[0]); } @Override protected void onPostExecute(String result) { progressDialog.hide(); Toast.makeText(getApplicationContext(),result,Toast.LENGTH_LONG).show(); String path = "sdcard/photoalbu/downloaded_image.jpg"; imageView.setImageDrawable(Drawable.createFromPath(path)); } } }
Step 3. Manifest.xml
// Must get this permission for Internet and external storage
[:]