Fix url:file:// style URIs from not being detected in UriUtil. am: c8e4ab2b22
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Messaging/+/17957509 Change-Id: Iace24a73bdf3f1ece511f4689198b1e28f4026c9 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -49,6 +49,8 @@ public class UriUtil {
|
|||||||
private static final String SCHEME_MMSTO = "smsto";
|
private static final String SCHEME_MMSTO = "smsto";
|
||||||
public static final HashSet<String> SMS_MMS_SCHEMES = new HashSet<String>(
|
public static final HashSet<String> SMS_MMS_SCHEMES = new HashSet<String>(
|
||||||
Arrays.asList(SCHEME_SMS, SCHEME_MMS, SCHEME_SMSTO, SCHEME_MMSTO));
|
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 String SCHEME_BUGLE = "bugle";
|
||||||
public static final HashSet<String> SUPPORTED_SCHEME = new HashSet<String>(
|
public static final HashSet<String> SUPPORTED_SCHEME = new HashSet<String>(
|
||||||
@@ -98,8 +100,7 @@ public class UriUtil {
|
|||||||
public static boolean isFileUri(final Uri uri) {
|
public static boolean isFileUri(final Uri uri) {
|
||||||
return uri != null &&
|
return uri != null &&
|
||||||
uri.getScheme() != null &&
|
uri.getScheme() != null &&
|
||||||
TextUtils.equals(uri.getScheme().trim().toLowerCase(),
|
uri.getScheme().trim().toLowerCase().contains(ContentResolver.SCHEME_FILE);
|
||||||
ContentResolver.SCHEME_FILE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -216,9 +217,10 @@ public class UriUtil {
|
|||||||
inputStream = context.getContentResolver().openInputStream(sourceUri);
|
inputStream = context.getContentResolver().openInputStream(sourceUri);
|
||||||
} else {
|
} else {
|
||||||
// The content is remote. Download it.
|
// The content is remote. Download it.
|
||||||
final URL url = new URL(sourceUri.toString());
|
inputStream = getInputStreamFromRemoteUri(sourceUri);
|
||||||
final URLConnection ucon = url.openConnection();
|
if (inputStream == null) {
|
||||||
inputStream = new BufferedInputStream(ucon.getInputStream());
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return persistContentToScratchSpace(inputStream);
|
return persistContentToScratchSpace(inputStream);
|
||||||
} catch (final Exception ex) {
|
} 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
|
* Persist a piece of content from the given input stream, byte by byte to the specified
|
||||||
* directory.
|
* directory.
|
||||||
@@ -273,9 +292,10 @@ public class UriUtil {
|
|||||||
inputStream = context.getContentResolver().openInputStream(sourceUri);
|
inputStream = context.getContentResolver().openInputStream(sourceUri);
|
||||||
} else {
|
} else {
|
||||||
// The content is remote. Download it.
|
// The content is remote. Download it.
|
||||||
final URL url = new URL(sourceUri.toString());
|
inputStream = getInputStreamFromRemoteUri(sourceUri);
|
||||||
final URLConnection ucon = url.openConnection();
|
if (inputStream == null) {
|
||||||
inputStream = new BufferedInputStream(ucon.getInputStream());
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return persistContent(inputStream, outputDir, contentType);
|
return persistContent(inputStream, outputDir, contentType);
|
||||||
} catch (final Exception ex) {
|
} catch (final Exception ex) {
|
||||||
|
|||||||
Reference in New Issue
Block a user