在我的Android应用中,我尝试从亚马逊服务CloudFront下载媒体文件(图片,视频)。
我使用此代码。
Uri uri = Uri.parse(imageUrl);
String mimeType = MimeTypeMap.getFileExtensionFromUrl(messageComponent.getMediaUrl());
final String fname = "newfilename" + "." + mimeType;
DownloadManager downloadManager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
DownloadManager.Request request = new DownloadManager.Request(uri);
request.setDestinationInExternalPublicDir(context.getResources().getString(R.string.tmp_dir_path), fname);
request.setVisibleInDownloadsUi(true);
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE);
long downloadID = downloadManager.enqueue(request);
正在下载Nexus 5(Lolipop), Samsung S5(Kitkat)
图片。但是Xaiomi(Kitkat), LG L Fino(Kitkat)
图片没有下载。 DownloadManager.COLUMN_TOTAL_SIZE_BYTES
给出负-1值
但是当我使用直接亚马逊链接时 https://s3.amazonaws.com/grouvi_s/uploads/1c8f59f6-d1a9-430f-ab5c-2a89bcfbe14b/47e461a3-efa9-421a-8bc9-9b18053cbbbc.jpg
所有手机都可以下载媒体文件。
修改1
我刚在日志中发现了问题的可能原因:
W/DownloadManager﹕ Aborting request for download 840: while trying to execute request: javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x752a9a60: Failure in SSL library, usually a protocol error
error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure (external/openssl/ssl/s23_clnt.c:741 0x7362ad74:0x00000000)
据我了解它的某种证书问题。
答案 0 :(得分:2)
请检查此CVE,我认为它会处理您的问题:http://aws.amazon.com/security/security-bulletins/CVE-2014-3566-advisory/
这意味着默认情况下SSLv3被禁用,因为它不被视为安全