summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/app/DownloadManager.java14
1 files changed, 13 insertions, 1 deletions
diff --git a/core/java/android/app/DownloadManager.java b/core/java/android/app/DownloadManager.java
index a24375eba621..12f4a1868f6a 100644
--- a/core/java/android/app/DownloadManager.java
+++ b/core/java/android/app/DownloadManager.java
@@ -453,7 +453,19 @@ public class DownloadManager {
* @return this object
*/
public Request setDestinationInExternalPublicDir(String dirType, String subPath) {
- setDestinationFromBase(Environment.getExternalStoragePublicDirectory(dirType), subPath);
+ File file = Environment.getExternalStoragePublicDirectory(dirType);
+ if (file.exists()) {
+ if (!file.isDirectory()) {
+ throw new IllegalStateException(file.getAbsolutePath() +
+ " already exists and is not a directory");
+ }
+ } else {
+ if (!file.mkdir()) {
+ throw new IllegalStateException("Unable to create directory: "+
+ file.getAbsolutePath());
+ }
+ }
+ setDestinationFromBase(file, subPath);
return this;
}