您现在的位置是:首页 > 编程 > 

android调用系统下载器下载文件

2025-07-28 21:17:52
   在项目中使用到了在android端下载服务端的文件,之前使用的是http下载方式,现在想改成调用系统的下载器进行下载,实现步骤为:   1.得到url:文件下载地址   2.使用URL下载:  (1)下载前先判断文件是否已经在下载,避免重复下载:   // 判断该文件是否在下载

   在项目中使用到了在android端下载服务端的文件,之前使用的是http下载方式,现在想改成调用系统的下载器进行下载,实现步骤为:

  1.得到url:文件下载地址

  2.使用URL下载:

 (1)下载前先判断文件是否已经在下载,避免重复下载:
  
// 判断该文件是否在下载
	private boolean isDowning(String uri) {
		boolean flag = false;
		try {
			DownloadManager.Query query = new DownloadManager.Query();

			query.setFilterByStatus(DownloadManager.STATUS_RUIG);
			if (downloadManager == null) {
				downloadManager = ((DownloadManager) this
						.getSystemService(Activity.DOWLOAD_SERVICE));
			}
			Cursor c = downloadManager.query(query);
			String downingURI;
			while (()) {
				downingURI = c.getString(c
						.getColumnIndex(DownloadManager.COLUM_URI));
				if ((uri)) {
					flag = true;
					break;
				}
			}
			if (c != null) {
				();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return flag;
	}
  (2)如果未在下载则下载文件:
// 本地存储路径
Request request = new Request(Uri.parse(url));
// 在通知栏中显示
request.setShowRunningotification(true);
request.setVisibleInDownloadsUi(true);
String dir =tempFilrDir;//本地文件存储目录 相对路径
String fileame =  悟空.mp;//下载的文件名称
request.setDestinationInExternalPublicDir(dir, fileame);//文件存储路径 绝对路径
request.setTitle(<span style=font-family: KaiTi_GB212;>fileame </span>);//下载时在通知栏显示的文字
//downloadManager = ((DownloadManager) this.getSystemService(Activity.DOWLOAD_SERVICE));
<pre name=code class=java>long downloadId = (request);//执行下载   
add(new Long(downloadId));//DownloadCompleteReceiver下载完成的接收器,第//步会讲到

()接收完成的接收器
<span style=font-family: KaiTi_GB212;></span><pre name=code class=java>package com.bcts.;
import java.util.ArrayList;
import android.app.DownloadManager;
import BroadcastReceiver;
import Context;
import Intent;
import android.database.Cursor;
import Handler;
import Message;
import android.util.Log;

import com.bcts.Ctant;

/**
 * 调用系统下载器下载文件
 *  
 */
public class DownloadCompleteReceiver extends BroadcastReceiver {
	public static final String TAG = DownloadCompleteReceiver;

	public static ArrayList<Long> mDownloadIDs = new ArrayList<Long>();

	public String fileame;
	public  Handler mHandler;


	public  DownloadCompleteReceiver(Handler handler) {
		mHandler = handler ;
	}

	@Override
	public void onReceive(Context context, Intent intent) {
		if (intent.getAction().equals(DownloadManager.ACTIO_DOWLOAD_COMPLETE)) {
			long downId = intent.getLongExtra(
					DownloadManager.EXTRA_DOWLOAD_ID, -1);
			//
			if ((downId)) {
				// //////////////////////////////
				DownloadManager downloadManager = (DownloadManager) context
						.getSystemService(Context.DOWLOAD_SERVICE);

				DownloadManager.Query query = new DownloadManager.Query();
				// query.setFilterByStatus(DownloadManager.STATUS_SUCCESSFUL);
				query.setFilterById(downId);
				Cursor c = downloadManager.query(query);
				if (()) {
					fileame = c.getString(c.getColumnIndex(DownloadManager.COLUM_LOCAL_FILEAME));
					Message m = new Message();
					 = fileame;
					m.what = Ctant.DOWLOAD_FIISHED;
					mHandler.sendMessage(m);
					Log.i(TAG, 下载	  fileame  	完成);
				}else{
					Log.i(TAG, 下载	  fileame  	失败);
				}
				if (c != null) {
					();
				}
				mDownloadIDs.remove(downId);

			}

		}
	}

}
(4)注册接收完成的广播

<span style=font-family: KaiTi_GB212;>   </span><pre name=code class=java>	downloadCompleteReceiver = new DownloadCompleteReceiver(mHandler);
		IntentFilter myIntentFilter = new IntentFilter();
		myIntentFilter.addAction(DownloadManager.ACTIO_DOWLOAD_COMPLETE);
		// 注册广播
		registerReceiver(downloadCompleteReceiver, myIntentFilter);


#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1234830.html

相关标签:无
上传时间: 2025-07-26 13:38:48
留言与评论(共有 9 条评论)
本站网友 medipro
25分钟前 发表
myIntentFilter);
本站网友 无锡房产备案
20分钟前 发表
下载   fileame   完成); }else{ Log.i(TAG
本站网友 mp3压缩
11分钟前 发表
Intent intent) { if (intent.getAction().equals(DownloadManager.ACTIO_DOWLOAD_COMPLETE)) { long downId = intent.getLongExtra( DownloadManager.EXTRA_DOWLOAD_ID
本站网友 绿卡凯尔
26分钟前 发表
下载   fileame   完成); }else{ Log.i(TAG
本站网友 贴玻璃膜
6分钟前 发表
下载   fileame   失败); } if (c != null) { (); } mDownloadIDs.remove(downId); } } } } (4)注册接收完成的广播 <span style=font-family
本站网友 求知若渴
12分钟前 发表
fileame);//文件存储路径 绝对路径 request.setTitle(<span style=font-family
本站网友 提高记忆力的食物
15分钟前 发表
Intent intent) { if (intent.getAction().equals(DownloadManager.ACTIO_DOWLOAD_COMPLETE)) { long downId = intent.getLongExtra( DownloadManager.EXTRA_DOWLOAD_ID
本站网友 网页制作用什么软件
5分钟前 发表
KaiTi_GB212;></span><pre name=code class=java>package com.bcts.; import java.util.ArrayList; import android.app.DownloadManager; import BroadcastReceiver; import Context; import Intent; import android.database.Cursor; import Handler; import Message; import android.util.Log; import com.bcts.Ctant; /** * 调用系统下载器下载文件 * */ public class DownloadCompleteReceiver extends BroadcastReceiver { public static final String TAG = DownloadCompleteReceiver; public static ArrayList<Long> mDownloadIDs = new ArrayList<Long>(); public String fileame; public Handler mHandler; public DownloadCompleteReceiver(Handler handler) { mHandler = handler ; } @Override public void onReceive(Context context