Merge "Add a static method to get the InputStream of a content URL" into honeycomb
This commit is contained in:
committed by
Android (Google) Code Review
commit
7a8f01abf9
@@ -74,13 +74,13 @@ class JniUtil {
|
|||||||
return sCacheDirectory;
|
return sCacheDirectory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final String ANDROID_CONTENT = "content:";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called by JNI. Calculates the size of an input stream by reading it.
|
* Called by JNI. Calculates the size of an input stream by reading it.
|
||||||
* @return long The size of the stream
|
* @return long The size of the stream
|
||||||
*/
|
*/
|
||||||
private static synchronized long contentUrlSize(String url) {
|
private static synchronized long contentUrlSize(String url) {
|
||||||
final String ANDROID_CONTENT = "content:";
|
|
||||||
|
|
||||||
// content://
|
// content://
|
||||||
if (url.startsWith(ANDROID_CONTENT)) {
|
if (url.startsWith(ANDROID_CONTENT)) {
|
||||||
try {
|
try {
|
||||||
@@ -114,6 +114,35 @@ class JniUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called by JNI.
|
||||||
|
*
|
||||||
|
* @return Opened input stream to content
|
||||||
|
* TODO: Make all content loading use this instead of BrowserFrame.java
|
||||||
|
*/
|
||||||
|
private static synchronized InputStream contentUrlStream(String url) {
|
||||||
|
// content://
|
||||||
|
if (url.startsWith(ANDROID_CONTENT)) {
|
||||||
|
try {
|
||||||
|
// Strip off mimetype, for compatibility with ContentLoader.java
|
||||||
|
// If we don't do this, we can fail to load Gmail attachments,
|
||||||
|
// because the URL being loaded doesn't exactly match the URL we
|
||||||
|
// have permission to read.
|
||||||
|
int mimeIndex = url.lastIndexOf('?');
|
||||||
|
if (mimeIndex != -1) {
|
||||||
|
url = url.substring(0, mimeIndex);
|
||||||
|
}
|
||||||
|
Uri uri = Uri.parse(url);
|
||||||
|
return sContext.getContentResolver().openInputStream(uri);
|
||||||
|
} catch (Exception e) {
|
||||||
|
Log.e(LOGTAG, "Exception: " + url);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true if we're using the Chromium HTTP stack.
|
* Returns true if we're using the Chromium HTTP stack.
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user