有没有办法使用Android的DownloadManager从S3存储桶下载文件?使用DownloadManager从S3下载apk文件
我目前可以从Dropbox的这样一个apk文件:
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
request.addRequestHeader("Content-Type", "application/vnd.android.package-archive");
request.setMimeType("application/vnd.android.package-archive");
final DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
final long id = manager.enqueue(request);
现在我想做的事就是我的亚马逊网址替换“网址”。当我这样做时,下载只停留在0%,并且只是停留在那里。
有没有办法做到这一点?
顺便说一下,我通过的Amazon URL包含AWSAccessKeyId
,Expires
和Signature
参数。该网址看起来像这样:
https://bucket-name.s3-us-west-2.amazonaws.com/uploads/app/apk/22/app.apk?AWSAccessKeyId=""&Expires=""&Signature=""
您是否尝试过纯HTTP而不是HTTPS?您是否尝试过在您正在测试的设备或模拟器上的Web浏览器应用程序中访问URL?您是否尝试了一个用于公共资源的URL(即,不需要任何这些查询参数的URL)?这些只是一些想法,可能会缩小问题的范围。 – CommonsWare
@CommonsWare我刚刚尝试了一些你建议的事情。如果我点击我的S3存储桶中的文件选项“公开”,下载工作。这消除了参数的需要。所以我假设这个问题与我的AWS凭证相关?尽管使用链接中的凭证,该文件在我的计算机上的浏览器中下载。 – theDazzler
“所以我假设问题与我的AWS凭证有关?” - 我从来没有用'DownloadManager'试过带查询参数的网址。我会*认为''DownloadManager'会支持它。看一下解析过的'Uri'和getQuery()''''''getQueryParameters()'等东西,并确保你的值不会在一路上被扰乱。 – CommonsWare