在后台下载图片

来源:互联网 发布:vb自动登录弹出窗口 编辑:程序博客网 时间:2024/04/28 06:17

Request.setAllowedNetworkTypes();
指定下载所使用的网络类型
Request.setAllowedOverRoaming();
指定当前设备处于漫游模式的时候是否进行下载
Request.setTitle();
设置下载在系统通知栏中显示的标题
Request.setDescription();
设置下载在系统通知栏显示的描述信息


在没有指定下载保存的位置的时候文件会被下载到共享的下载缓存中,系统随时都有可能为了释放存储空间而将文件删除。正因如此,这是一种下载资源的快捷方式。
但要长期保存文件的话,就要指定保存的位置
Request.setDestinationUri();
用外部存储上的文件uri设置下载的保存位置
Request.setDestinationInExternalFilesDir();
将外部存储上的隐藏文件夹设这为下载位置
Request.setDestinationInExternalPublicDir();
将外部存储上的共享文件夹设这为下载位置

DownloadManager.remove();


package com.android.download;import java.io.FileInputStream;import java.io.FileNotFoundException;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.widget.ImageView;public class DownloadActivity extends Activity {private static final String DL_ID = "download_id";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);            } @Overrideprotected void onResume() { super.onResume();if(!prefs.contains("DL_ID")){Uri resource = Uri.parse("");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));}  @Overrideprotected void onPause() { super.onPause();unregisterReceiver(receiver);}        private BroadcastReceiver receiver = new BroadcastReceiver(){ 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)); 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; } }}}


原创粉丝点击