summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorolly <olly@google.com>2010-12-21 19:09:12 +0000
committerolly <olly@google.com>2010-12-21 19:09:12 +0000
commit6bf8b8d183ef3fa118ad9fb8eb35c2ee101e46a1 (patch)
treec66bb21b6ffba9df33545dfa7e372ed679c5d434 /src
parent0ecf66c946cb4fdf2dd4763023f4320b41eedd24 (diff)
downloadandroid_packages_providers_DownloadProvider-6bf8b8d183ef3fa118ad9fb8eb35c2ee101e46a1.tar.gz
android_packages_providers_DownloadProvider-6bf8b8d183ef3fa118ad9fb8eb35c2ee101e46a1.tar.bz2
android_packages_providers_DownloadProvider-6bf8b8d183ef3fa118ad9fb8eb35c2ee101e46a1.zip
Fixing Helpers to correctly parse file names / extensions in the case where the filename does not have a file extension but there are one or more dots in the parent directory names.
e.g. /mnt/sdcard/Android/data/com.google.android.youtube/files/file Change-Id: I5aad1625a9f36135e947c0f929ee740fc66eb0d3
Diffstat (limited to 'src')
-rw-r--r--src/com/android/providers/downloads/Helpers.java8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/com/android/providers/downloads/Helpers.java b/src/com/android/providers/downloads/Helpers.java
index ac4c6502..f392f3e9 100644
--- a/src/com/android/providers/downloads/Helpers.java
+++ b/src/com/android/providers/downloads/Helpers.java
@@ -157,7 +157,8 @@ public class Helpers {
// Add an extension if filename does not have one
String extension = null;
int dotIndex = filename.lastIndexOf('.');
- if (dotIndex < 0) {
+ boolean missingExtension = dotIndex < 0 || dotIndex < filename.lastIndexOf("/");
+ if (missingExtension) {
extension = chooseExtensionFromMimeType(mimeType, true);
} else {
extension = chooseExtensionFromFilename(mimeType, destination, filename, dotIndex);
@@ -414,12 +415,11 @@ public class Helpers {
}
private static String chooseExtensionFromFilename(String mimeType, int destination,
- String filename, int dotIndex) {
+ String filename, int lastDotIndex) {
String extension = null;
if (mimeType != null) {
// Compare the last segment of the extension against the mime type.
// If there's a mismatch, discard the entire extension.
- int lastDotIndex = filename.lastIndexOf('.');
String typeFromExt = MimeTypeMap.getSingleton().getMimeTypeFromExtension(
filename.substring(lastDotIndex + 1));
if (typeFromExt == null || !typeFromExt.equalsIgnoreCase(mimeType)) {
@@ -439,7 +439,7 @@ public class Helpers {
if (Constants.LOGVV) {
Log.v(Constants.TAG, "keeping extension");
}
- extension = filename.substring(dotIndex);
+ extension = filename.substring(lastDotIndex);
}
return extension;
}