android调用系统下载器下载文件
在项目中使用到了在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组装电脑配置单推荐报价格
上传时间: 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 |