android下载指定的文件

public class MainActivity extends Activity {
private DownloadManager downloadManager;
private long mDownloadReference;//当前下载任务的引用

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
downloadManager = (DownloadManager) getSystemService(Activity.DOWNLOAD_SERVICE);
//注册监听下载完成的广播
IntentFilter filter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE);
DownLoadCompleteReceiver completeReceiver = new DownLoadCompleteReceiver();
registerReceiver(completeReceiver, filter);
}
@SuppressLint("NewApi")
public void onclick(View view){
switch(view.getId()){
//下载文件
case R.id.btn_down:
Uri uri = Uri.parse("http://img31.ddimg.cn/71/7/23043311-1_w.jpg");
DownloadManager.Request request = new DownloadManager.Request(uri);
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE|DownloadManager.Request.NETWORK_WIFI);
request.setTitle("下载图像");
request.setDescription("正在使用下载图像");
request.setDestinationInExternalFilesDir(this, "test/images", "download_image.jpg");
mDownloadReference = downloadManager.enqueue(request);//加入下载队列
setTitle("正在下载图像...");
break;
//取消下载
case R.id.btn_cancel:
downloadManager.remove(mDownloadReference);
break;
//查看下载历史
case R.id.btn_history:
startActivity(new Intent(DownloadManager.ACTION_VIEW_DOWNLOADS));
break;
//查看下载状态
case R.id.btn_status:
Query query = new Query();
query.setFilterById(mDownloadReference);//设置查询的条件
Cursor cursor = downloadManager.query(query);
if(cursor.moveToFirst()){
checkStatus(cursor);
}
break;
}
}
//查询下载状态
@SuppressLint("InlinedApi")
private void checkStatus(Cursor cursor){
//获取下载状态的代码
int status = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS));
//获取下载原因的代码
int reason = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_REASON));
//获取下载文件存储在本地的文件名
for(int i=0;i<cursor.getColumnCount();i++)
System.out.println(cursor.getColumnName(i));
String filename = cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI));
System.out.println(filename);
String statusText = "";
String reasonText = "";
switch(status){
case DownloadManager.STATUS_FAILED://下载失败
statusText = "STATUS_FAILED";
switch(reason){
case DownloadManager.ERROR_CANNOT_RESUME:
reasonText = "ERROR_CANNOT_RESUME";
break;
case DownloadManager.ERROR_DEVICE_NOT_FOUND:
reasonText = "ERROR_DEVICE_NOT_FOUND";
break;
case DownloadManager.ERROR_FILE_ALREADY_EXISTS:
reasonText = "ERROR_FILE_ALREADY_EXISTS";
break;
case DownloadManager.ERROR_FILE_ERROR:
reasonText = "ERROR_FILE_ERROR";
break;
case DownloadManager.ERROR_HTTP_DATA_ERROR:
reasonText = "ERROR_HTTP_DATA_ERROR";
break;
case DownloadManager.ERROR_INSUFFICIENT_SPACE://空间不足
reasonText = "ERROR_INSUFFICIENT_SPACE";
break;
case DownloadManager.ERROR_TOO_MANY_REDIRECTS:
reasonText = "ERROR_TOO_MANY_REDIRECTS";
break;
case DownloadManager.ERROR_UNHANDLED_HTTP_CODE:
reasonText = "ERROR_UNHANDLED_HTTP_CODE";
break;
case DownloadManager.ERROR_UNKNOWN:
reasonText = "ERROR_UNKNOWN";
break;
}
break;
case DownloadManager.STATUS_PAUSED://下载暂停
statusText = "STATUS_PAUSED";
switch (reason) {
case DownloadManager.PAUSED_QUEUED_FOR_WIFI://排队wifi
reasonText = "PAUSED_QUEUED_FOR_WIFI";
break;
case DownloadManager.PAUSED_UNKNOWN:
reasonText = "PAUSED_UNKNOWN";
break;
case DownloadManager.PAUSED_WAITING_FOR_NETWORK:
reasonText = "PAUSED_WAITING_FOR_NETWORK";
break;
case DownloadManager.PAUSED_WAITING_TO_RETRY:
reasonText = "PAUSED_WAITING_TO_RETRY";
break;
}
break;
case DownloadManager.STATUS_PENDING://正在pending文件
statusText = "STATUS_PENDING";
break;
case DownloadManager.STATUS_RUNNING://下载正在进行中
statusText = "STATUS_RUNNING";
break;
case DownloadManager.STATUS_SUCCESSFUL://下载成功
statusText = "STATUS_SUCCESSFUL";
reasonText = "Filename:\n"+filename;
break;
}
Toast.makeText(this, statusText+"\n"+reasonText, Toast.LENGTH_LONG).show();
}
//监听下载完成的广播
private class DownLoadCompleteReceiver extends BroadcastReceiver{


@Override
public void onReceive(Context arg0, Intent intent) {
if(intent.getAction().equals(DownloadManager.ACTION_DOWNLOAD_COMPLETE)){
long referenceId = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);
if(referenceId == mDownloadReference){
setTitle("图像下载完成");
}
}

}

}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值