android系统中包含了很多的系统管理类,比如:PowerManager,AudioManager等,而使用downloadmanager来下载文件是件很方便的事情。
下面是关键代码:
DownloadManager manager = null;
private long mDownloadReference;//当前下载任务的引用,通过该引用可以操作下载任务
//获取downloadmanager对象
manager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
IntentFilter filter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE);
//创建监听下载完成的广播接收对象
DownloadCompleteReciver downloadeReciver = new DownloadCompleteReciver();
//注册广播监听器
registerReceiver(downloadeReciver, filter);
下载文件的详细代码:
//指定要下载的文件
Uri uri = Uri.parse("http://10.0.2.2/test/data/get.mp3");
//创建下载任务对象
DownloadManager.Request request = new DownloadManager.Request(uri);
//设置下载标题
request.setTitle("下载文件");
//设置下载描述
request.setDescription("正在使用downloadmanager下载文件");
//指定下载到本地的目录
request.setDestinationInExternalFilesDir(MainActivity.this,"down","hahaha.mp3");
//将下载任务加入到队列中,并返回下载任务的而引用
mDownloadReference = manager.enqueue(request);
setTitle("正在下载");
/取消下载按钮的单机事件
//取消mDownloadReference指向的下载任务
manager.remove(mDownloadReference);
//显示下载历史
Intent intent = new Intent();;
intent.setAction(DownloadManager.ACTION_VIEW_DOWNLOADS);
//显示下载历史
startActivity(intent);
//查询下载状态
//查询状态所在的列索引
int columnIndex = cursor.getColumnIndex(manager.COLUMN_STATUS);
//获取下载状态的代码
int status = cursor.getInt(columnIndex);
//下载原因所在的列的索引
int columnReason = cursor.getColumnIndex(manager.COLUMN_REASON);
//获取下载原因的代码
int reason = cursor.getInt(columnReason);
//获取下载文件存储在本地文件名所在列的索引
int filenameIndex = cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_FILENAME);
//获取下载文件存储在本地的文件名
String filename = cursor.getString(filenameIndex);