aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/com/android/messaging/util/UriUtil.java36
1 files changed, 28 insertions, 8 deletions
diff --git a/src/com/android/messaging/util/UriUtil.java b/src/com/android/messaging/util/UriUtil.java
index 6e39749..f92155f 100644
--- a/src/com/android/messaging/util/UriUtil.java
+++ b/src/com/android/messaging/util/UriUtil.java
@@ -49,6 +49,8 @@ public class UriUtil {
private static final String SCHEME_MMSTO = "smsto";
public static final HashSet<String> SMS_MMS_SCHEMES = new HashSet<String>(
Arrays.asList(SCHEME_SMS, SCHEME_MMS, SCHEME_SMSTO, SCHEME_MMSTO));
+ private static final String SCHEME_HTTP = "http";
+ private static final String SCHEME_HTTPS = "https";
public static final String SCHEME_BUGLE = "bugle";
public static final HashSet<String> SUPPORTED_SCHEME = new HashSet<String>(
@@ -98,8 +100,7 @@ public class UriUtil {
public static boolean isFileUri(final Uri uri) {
return uri != null &&
uri.getScheme() != null &&
- TextUtils.equals(uri.getScheme().trim().toLowerCase(),
- ContentResolver.SCHEME_FILE);
+ uri.getScheme().trim().toLowerCase().contains(ContentResolver.SCHEME_FILE);
}
/**
@@ -216,9 +217,10 @@ public class UriUtil {
inputStream = context.getContentResolver().openInputStream(sourceUri);
} else {
// The content is remote. Download it.
- final URL url = new URL(sourceUri.toString());
- final URLConnection ucon = url.openConnection();
- inputStream = new BufferedInputStream(ucon.getInputStream());
+ inputStream = getInputStreamFromRemoteUri(sourceUri);
+ if (inputStream == null) {
+ return null;
+ }
}
return persistContentToScratchSpace(inputStream);
} catch (final Exception ex) {
@@ -235,6 +237,23 @@ public class UriUtil {
}
}
+ @DoesNotRunOnMainThread
+ private static InputStream getInputStreamFromRemoteUri(final Uri sourceUri)
+ throws IOException {
+ if (isRemoteUri(sourceUri)) {
+ final URL url = new URL(sourceUri.toString());
+ final URLConnection ucon = url.openConnection();
+ return new BufferedInputStream(ucon.getInputStream());
+ } else {
+ return null;
+ }
+ }
+
+ private static boolean isRemoteUri(final Uri sourceUri) {
+ return sourceUri.getScheme().equals(SCHEME_HTTP)
+ || sourceUri.getScheme().equals(SCHEME_HTTPS);
+ }
+
/**
* Persist a piece of content from the given input stream, byte by byte to the specified
* directory.
@@ -273,9 +292,10 @@ public class UriUtil {
inputStream = context.getContentResolver().openInputStream(sourceUri);
} else {
// The content is remote. Download it.
- final URL url = new URL(sourceUri.toString());
- final URLConnection ucon = url.openConnection();
- inputStream = new BufferedInputStream(ucon.getInputStream());
+ inputStream = getInputStreamFromRemoteUri(sourceUri);
+ if (inputStream == null) {
+ return null;
+ }
}
return persistContent(inputStream, outputDir, contentType);
} catch (final Exception ex) {