我正在尝试使下载管理器请求正常工作,但遇到了一个奇怪的错误。这是代码:
package com.vsnetworks.vswebkads;
import java.io.File;
import android.net.Uri;
import android.os.Bundle;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.DownloadManager;
import android.app.DownloadManager.Request;
import android.content.Context;
import android.util.Log;
@TargetApi(9)
public class MainActivity extends Activity {
static final String DL_STR = "downloads";
@Override
public void onCreate(Bundle savedInstanceState) {
Log.v("VERS TEST", "1.1");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
File externalDir = getExternalFilesDir(null);
externalDir.mkdirs();
File dlDir = new File(externalDir, MainActivity.DL_STR);
if (!dlDir.exists())
dlDir.mkdirs();
DownloadManager dlManager = (DownloadManager) getApplicationContext().getSystemService(Context.DOWNLOAD_SERVICE);
Uri uri = Uri.parse("https://www.google.com/images/srpr/logo3w.png");
//uri = Uri.parse("http://download.thinkbroadband.com/20MB.zip");
DownloadManager.Request request = new Request(uri);
request.setAllowedNetworkTypes(Request.NETWORK_WIFI);
request.setDestinationInExternalFilesDir(getApplicationContext(), null, "downloads/test.png");
request.setTitle("test");
dlManager.enqueue(request);
}
}
有趣的是,如果我取消注释第二个 uri = 行,下载效果很好,文件最终在目录中。这让我认为是我试图通过 SSL 下载导致问题。但是,根据这两个线程,下载管理器支持 ssl(在第一个的注释中):
我似乎也没有收到任何错误,告诉我下载管理器只能与第二个链接中的 http 一起使用。这是我看到的错误:
01-22 17:23:42.385: I/DownloadManager(1061): Initiating request for download 4068
01-22 17:23:42.905: I/DownloadManager(1061): Initiating request for download 4068
01-22 17:23:42.905: W/DownloadManager(1061): Aborting request for download 4068: Trying to resume a download that can't be resumed
01-22 17:23:42.905: D/DownloadManager(1061): setupDestinationFile() unable to resume download, deleting /storage/sdcard0/Android/data/com.vsnetworks.vswebkads/files/downloads/test.png
01-22 17:23:42.915: D/DownloadManager(1061): cleanupDestination() deleting /storage/sdcard0/Android/data/com.vsnetworks.vswebkads/files/downloads/test.png
我今天刚刚在我的平板电脑上更新了 android,它的版本是 4.1.1,所以我认为这不是版本问题。
那么,我可以使用 https 进行下载管理器请求吗?如果可以,这是正确的方法吗?