summaryrefslogtreecommitdiffstats
path: root/src/com/android/providers/downloads/Helpers.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/providers/downloads/Helpers.java')
-rw-r--r--src/com/android/providers/downloads/Helpers.java9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/com/android/providers/downloads/Helpers.java b/src/com/android/providers/downloads/Helpers.java
index 40fd3b87..99ced675 100644
--- a/src/com/android/providers/downloads/Helpers.java
+++ b/src/com/android/providers/downloads/Helpers.java
@@ -16,6 +16,7 @@
package com.android.providers.downloads;
+import static android.os.Environment.buildExternalStorageAndroidDataDirs;
import static android.os.Environment.buildExternalStorageAppCacheDirs;
import static android.os.Environment.buildExternalStorageAppDataDirs;
import static android.os.Environment.buildExternalStorageAppMediaDirs;
@@ -65,6 +66,9 @@ public class Helpers {
private static final Pattern CONTENT_DISPOSITION_PATTERN =
Pattern.compile("attachment;\\s*filename\\s*=\\s*\"([^\"]*)\"");
+ private static final Pattern PATTERN_ANDROID_DIRS =
+ Pattern.compile("(?i)^/storage/[^/]+(?:/[0-9]+)?/Android/(?:data|obb|media)/.+");
+
private static final Object sUniqueLock = new Object();
private static HandlerThread sAsyncHandlerThread;
@@ -473,6 +477,10 @@ public class Helpers {
throw new IOException("Failed to generate an available filename");
}
+ public static boolean isFileInExternalAndroidDirs(String filePath) {
+ return PATTERN_ANDROID_DIRS.matcher(filePath).matches();
+ }
+
static boolean isFilenameValid(Context context, File file) {
return isFilenameValid(context, file, true);
}
@@ -491,7 +499,6 @@ public class Helpers {
try {
if (containsCanonical(buildExternalStorageAppDataDirs(packageName), file) ||
containsCanonical(buildExternalStorageAppObbDirs(packageName), file) ||
- containsCanonical(buildExternalStorageAppCacheDirs(packageName), file) ||
containsCanonical(buildExternalStorageAppMediaDirs(packageName), file)) {
return true;
}