Java Android下载列表器
有没有办法确定下载是否成功。 我正在使用以下代码从其他手机下载文件,但有时其他用户超出了wifi范围。我想知道源代码超出了范围,所以当时无法下载 有什么可以帮助我的倾听者类型的东西吗Java Android下载列表器,java,android,Java,Android,有没有办法确定下载是否成功。 我正在使用以下代码从其他手机下载文件,但有时其他用户超出了wifi范围。我想知道源代码超出了范围,所以当时无法下载 有什么可以帮助我的倾听者类型的东西吗 Uri uri=Uri.parse(downLoadLink); Environment .getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) .mkdirs(); lastDownload = mgr.enqueue(n
Uri uri=Uri.parse(downLoadLink);
Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
.mkdirs();
lastDownload = mgr.enqueue(new DownloadManager.Request(uri)
.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE)
.setAllowedOverRoaming(false)
.setTitle(aryToReturn.get(position).name)
.setDescription("File Downloding...")
.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS,aryToReturn.get(position).name));
我使用以下代码完成了这项工作
private class downloadTask extends AsyncTask<String, Void, String> {
ProgressDialog dialog = new ProgressDialog(webServices.this);
@Override
protected String doInBackground(String... params) {
//Uri uri=Uri.parse("http://commonsware.com/misc/test.mp4");
Uri uri=Uri.parse(downLoadLink);
Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
.mkdirs();
lastDownload=
mgr.enqueue(new DownloadManager.Request(uri)
.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI |
DownloadManager.Request.NETWORK_MOBILE)
.setAllowedOverRoaming(false)
.setTitle(downloadFileName)
.setDescription("File Downloding...")
.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS,
downloadFileName));
// Log.d("-->", String.valueOf(lastDownload));
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "Executed";
}
@Override
protected void onPostExecute(String result) {
dialog.dismiss();
Cursor c=mgr.query(new DownloadManager.Query().setFilterById(lastDownload));
if (c==null) {
//Toast.makeText(this, "Download not found!", Toast.LENGTH_LONG).show();
}
else {
c.moveToFirst();
Log.e("yes", statusMessage(c));
// Toast.makeText(this, statusMessage(c), Toast.LENGTH_LONG).show();
}
}
@Override
protected void onPreExecute() {
dialog.setMessage("Please wait...");
dialog.setCancelable(false);
dialog.show();
}
@Override
protected void onProgressUpdate(Void... values) {
}
}
private String statusMessage(Cursor c) {
String msg="???";
switch(c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS))) {
case DownloadManager.STATUS_FAILED:
msg="Download failed!";
break;
case DownloadManager.STATUS_PAUSED:
msg="Download paused!";
break;
case DownloadManager.STATUS_PENDING:
msg="Download pending!";
break;
case DownloadManager.STATUS_RUNNING:
msg="Download in progress!";
break;
case DownloadManager.STATUS_SUCCESSFUL:
msg="Download complete!";
break;
default:
msg="Download is nowhere in sight";
break;
}
return(msg);
私有类下载任务扩展了异步任务{
ProgressDialog=新建ProgressDialog(webServices.this);
@凌驾
受保护的字符串doInBackground(字符串…参数){
//Uri=Uri.parse(“http://commonsware.com/misc/test.mp4");
Uri=Uri.parse(下载链接);
环境
.getExternalStoragePublicDirectory(Environment.DIRECTORY\u下载)
.mkdirs();
最后下载=
经理排队(新的DownloadManager.Request(uri)
.setAllowedNetworkTypes(DownloadManager.Request.NETWORK\u WIFI|
DownloadManager.Request.NETWORK(移动)
.setAllowedOverRoaming(假)
.setTitle(下载文件名)
.setDescription(“文件下载…”)
.setDestinationNexternalPublicDir(Environment.DIRECTORY_下载,
下载文件名);
//Log.d(“-->”,String.valueOf(lastDownload));
试一试{
睡眠(5000);
}捕捉(中断异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回“已执行”;
}
@凌驾
受保护的void onPostExecute(字符串结果){
dialog.dismise();
游标c=mgr.query(new DownloadManager.query().setFilterById(lastDownload));
如果(c==null){
//Toast.makeText(这是“未找到下载!”,Toast.LENGTH_LONG.show();
}
否则{
c、 moveToFirst();
Log.e(“是”,状态消息(c));
//Toast.makeText(this,statusMessage(c),Toast.LENGTH_LONG.show();
}
}
@凌驾
受保护的void onPreExecute(){
setMessage(“请稍候…”);
对话框。可设置可取消(false);
dialog.show();
}
@凌驾
受保护的void onProgressUpdate(void…值){
}
}
私有字符串状态消息(光标c){
字符串msg=“?”;
开关(c.getInt(c.getColumnIndex(DownloadManager.COLUMN_状态))){
案例下载管理器.STATUS_失败:
msg=“下载失败!”;
打破
案例下载管理器。状态\u已暂停:
msg=“下载暂停!”;
打破
案例下载管理器.STATUS_挂起:
msg=“下载挂起!”;
打破
案例下载管理器.STATUS\u正在运行:
msg=“正在下载!”;
打破
案例下载管理器.STATUS\u成功:
msg=“下载完成!”;
打破
违约:
msg=“看不到下载”;
打破
}
返回(msg);
}您可以使用下载管理器或。嗯,好的,我会试试:-)谢谢回复@Sam。