From 648d539299829194ad8fbec03eb2a638ee49013d Mon Sep 17 00:00:00 2001 From: AriaLyy <511455842@qq.com> Date: Tue, 1 Aug 2017 16:13:03 +0800 Subject: [PATCH] fix bug https://github.com/AriaLyy/Aria/issues/87 --- .../aria/core/download/DownloadEntity.java | 4 +++- .../aria/core/download/DownloadTarget.java | 11 ++++++++-- .../downloader/HttpFileInfoThread.java | 2 +- .../com/arialyy/aria/util/CommonUtil.java | 22 ++++++++++++++++++- .../simple/download/SingleTaskActivity.java | 3 ++- 5 files changed, 36 insertions(+), 6 deletions(-) diff --git a/Aria/src/main/java/com/arialyy/aria/core/download/DownloadEntity.java b/Aria/src/main/java/com/arialyy/aria/core/download/DownloadEntity.java index f97bf1b7..ef4769eb 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/download/DownloadEntity.java +++ b/Aria/src/main/java/com/arialyy/aria/core/download/DownloadEntity.java @@ -18,9 +18,11 @@ package com.arialyy.aria.core.download; import android.os.Parcel; import android.os.Parcelable; +import android.text.TextUtils; import com.arialyy.aria.core.inf.AbsNormalEntity; import com.arialyy.aria.core.inf.AbsTaskEntity; import com.arialyy.aria.orm.Primary; +import com.arialyy.aria.util.CommonUtil; /** * Created by lyy on 2015/12/25. @@ -66,7 +68,7 @@ public class DownloadEntity extends AbsNormalEntity implements Parcelable { } public String getDisposition() { - return disposition; + return TextUtils.isEmpty(disposition) ? "" : CommonUtil.decryptBASE64(disposition); } public void setDisposition(String disposition) { diff --git a/Aria/src/main/java/com/arialyy/aria/core/download/DownloadTarget.java b/Aria/src/main/java/com/arialyy/aria/core/download/DownloadTarget.java index 3d41df0c..16978e96 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/download/DownloadTarget.java +++ b/Aria/src/main/java/com/arialyy/aria/core/download/DownloadTarget.java @@ -31,6 +31,7 @@ import java.io.File; public class DownloadTarget extends AbsDownloadTarget { protected String url; + DownloadTarget(DownloadEntity entity, String targetName) { this(entity.getUrl(), targetName); } @@ -88,7 +89,6 @@ public class DownloadTarget super.setHighestPriority(); } - /** * 下载任务是否存在 */ @@ -126,10 +126,17 @@ public class DownloadTarget return this; } - private DownloadEntity getDownloadEntity() { + public DownloadEntity getDownloadEntity() { return mEntity; } + /** + * 从header中获取文件描述信息 + */ + public String getContentDisposition() { + return mEntity.getDisposition(); + } + /** * 是否在下载 */ diff --git a/Aria/src/main/java/com/arialyy/aria/core/download/downloader/HttpFileInfoThread.java b/Aria/src/main/java/com/arialyy/aria/core/download/downloader/HttpFileInfoThread.java index 275000eb..51ce3611 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/download/downloader/HttpFileInfoThread.java +++ b/Aria/src/main/java/com/arialyy/aria/core/download/downloader/HttpFileInfoThread.java @@ -84,7 +84,7 @@ class HttpFileInfoThread implements Runnable { String disposition = conn.getHeaderField(mTaskEntity.dispositionKey); //Map> headers = conn.getHeaderFields(); if (!TextUtils.isEmpty(disposition)) { - mEntity.setDisposition(disposition); + mEntity.setDisposition(CommonUtil.encryptBASE64(disposition)); if (disposition.contains(mTaskEntity.dispositionFileKey)) { String[] infos = disposition.split("="); mEntity.setServerFileName(URLDecoder.decode(infos[1], "utf-8")); diff --git a/Aria/src/main/java/com/arialyy/aria/util/CommonUtil.java b/Aria/src/main/java/com/arialyy/aria/util/CommonUtil.java index 3e6b6e54..2f4fb2b4 100644 --- a/Aria/src/main/java/com/arialyy/aria/util/CommonUtil.java +++ b/Aria/src/main/java/com/arialyy/aria/util/CommonUtil.java @@ -21,6 +21,7 @@ import android.content.Intent; import android.content.SharedPreferences; import android.net.Uri; import android.text.TextUtils; +import android.util.Base64; import android.util.Log; import com.arialyy.aria.core.AriaManager; import com.arialyy.aria.core.command.normal.NormalCmdFactory; @@ -45,7 +46,6 @@ import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.ArrayList; import java.util.Collections; -import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; @@ -64,6 +64,26 @@ import java.lang.reflect.WildcardType; public class CommonUtil { private static final String TAG = "CommonUtil"; + /** + * base64 解密字符串 + * + * @param str 被加密的字符串 + * @return 解密后的字符串 + */ + public static String decryptBASE64(String str) { + return new String(Base64.decode(str.getBytes(), Base64.DEFAULT)); + } + + /** + * base64 加密字符串 + * + * @param str 需要加密的字符串 + * @return 加密后的字符串 + */ + public static String encryptBASE64(String str) { + return Base64.encodeToString(str.getBytes(), Base64.DEFAULT); + } + /** * 字符串编码转换 */ diff --git a/app/src/main/java/com/arialyy/simple/download/SingleTaskActivity.java b/app/src/main/java/com/arialyy/simple/download/SingleTaskActivity.java index d4be9dee..f6fd0fdd 100644 --- a/app/src/main/java/com/arialyy/simple/download/SingleTaskActivity.java +++ b/app/src/main/java/com/arialyy/simple/download/SingleTaskActivity.java @@ -43,7 +43,8 @@ public class SingleTaskActivity extends BaseActivity { //"http://kotlinlang.org/docs/kotlin-docs.pdf"; //"https://atom-installer.github.com/v1.13.0/AtomSetup.exe?s=1484074138&ext=.exe"; //"http://static.gaoshouyou.com/d/22/94/822260b849944492caadd2983f9bb624.apk"; - "http://static.gaoshouyou.com/d/22/94/822260b849944492caadd2983f9bb624.apk"; + //"http://static.gaoshouyou.com/d/22/94/822260b849944492caadd2983f9bb624.apk"; + "http://op08k4l50.bkt.clouddn.com/123.mp4"; //"http://down2.xiaoshuofuwuqi.com/d/file/filetxt/20170608/14/%BA%DA%CE%D7%CA%A6%E1%C8%C6%F0.txt"; //"http://tinghuaapp.oss-cn-shanghai.aliyuncs.com/20170612201739607815"; //"http://static.gaoshouyou.com/d/36/69/2d3699acfa69e9632262442c46516ad8.apk";