无法恢复下载

Rad*_*Dr. 7 android download-manager android-download-manager

我想从我的服务器下载一个大(zip)文件.它大约是440MB.我正在使用android下载服务.

这是我的代码:

DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
Request request = new Request(Uri.parse(SERVER_PATH));
request.setTitle(getString(R.string.title_download));
request.setDescription(getString(R.string.desc_download));
File mapDir = new File(Environment.getExternalStorageDirectory() + DEVICE_PATH_PART);
File mapPartFile = new File(Environment.getExternalStorageDirectory() + DEVICE_PATH_PART + MAP_PACKFILE + EXT_INPROGRESS);
request.setDestinationUri(Uri.fromFile(mapPartFile));
enqueue = dm.enqueue(request);
Run Code Online (Sandbox Code Playgroud)

下载开始很好.我可以在下载管理器中看到我的文件.但是当出现一些网络问题(连接中断)时,下载完成,错误1008,部分文件从我的目录中删除.这是我的问题和疑问: 如何强制下载服务不从目标目录中删除部分文件,以便恢复下载过程?

方面的问题或问题是:当我从我的应用程序下载440meg文件时,下载过程多次中断(无法恢复错误,之后无法恢复下载).但是,如果我直接在android中通过下载管理器应用程序下载相同的文件,一切都很好.我不知道为什么.我在接收器中遇到的唯一错误是1008关于恢复无法恢复.有没有人有同样的问题?

谢谢.

art*_*nig 3

您的服务器必须返回一个ETag标头,DownloadManager 使用该标头来识别下载文件。如果下载过程中断,DownloadManger 会请求部分下载以从上次下载的位置恢复。此请求包含附加标头:Content-Range范围和If-Match接收到的 ETag 的值。服务器必须使用请求的范围和 HTTP 状态代码 206 进行响应。检查服务器日志并将其与 ADB 输出进行比较。