Download Manager Demo : Download « Network « Android






Download Manager Demo

  
package app.test;

import java.io.FileInputStream;

import android.app.Activity;
import android.app.DownloadManager;
import android.app.DownloadManager.Request;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.ParcelFileDescriptor;
import android.preference.PreferenceManager;
import android.util.Log;
import android.widget.ImageView;

public class Test extends Activity {
  private static final String DL_ID = "downloadId";
  private SharedPreferences prefs;
  private DownloadManager dm;
  private ImageView imageView;
  
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        imageView = new ImageView(this);
        setContentView(imageView);
        prefs = PreferenceManager.getDefaultSharedPreferences(this);
        dm = (DownloadManager)getSystemService(DOWNLOAD_SERVICE);
    }
    @Override
    public void onResume() {
      super.onResume();
        if(!prefs.contains(DL_ID)) {
          Uri resource = Uri.parse("http://asdf.com/big.jpg");
          DownloadManager.Request request = new DownloadManager.Request(resource);
          request.setAllowedNetworkTypes(Request.NETWORK_MOBILE | Request.NETWORK_WIFI);
          request.setAllowedOverRoaming(false);
          request.setTitle("Download Sample");
          long id = dm.enqueue(request);
          prefs.edit().putLong(DL_ID, id).commit();
        } else {
          queryDownloadStatus();
        }
        registerReceiver(receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
    }
    @Override
    public void onPause() {
      super.onPause();
      unregisterReceiver(receiver);
    }
    private BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
      queryDownloadStatus();
    }
    };
    private void queryDownloadStatus() {
      DownloadManager.Query query = new DownloadManager.Query();
      query.setFilterById(prefs.getLong(DL_ID, 0));
      Cursor c = dm.query(query);
      if(c.moveToFirst()) {
        int status = c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS));
        Log.d("DM Sample","Status Check: "+status);
        switch(status) {
        case DownloadManager.STATUS_PAUSED:
        case DownloadManager.STATUS_PENDING:
        case DownloadManager.STATUS_RUNNING:
          break;
        case DownloadManager.STATUS_SUCCESSFUL:
          try {
            ParcelFileDescriptor file = dm.openDownloadedFile(prefs.getLong(DL_ID, 0));
            FileInputStream fis = new ParcelFileDescriptor.AutoCloseInputStream(file);
            imageView.setImageBitmap(BitmapFactory.decodeStream(fis));
          } catch (Exception e) {
            e.printStackTrace();
          }
          break;
        case DownloadManager.STATUS_FAILED:
          dm.remove(prefs.getLong(DL_ID, 0));
          prefs.edit().clear().commit();
          break;
        }
      }
    }
}

   
    
  








Related examples in the same category

1.Android download file tools
2.Using AsyncTask to download a big file
3.Using DownloadManager
4.Download Task
5.File Download Service
6.Cacheable Downloader
7.Download Manager
8.Book Downloader
9.download File