FileDocCategorySizeDatePackage
ContentLoader.javaAPI DocAndroid 1.5 API4349Wed May 06 22:41:56 BST 2009android.webkit

ContentLoader

public class ContentLoader extends StreamLoader
This class is a concrete implementation of StreamLoader that loads "content:" URIs

Fields Summary
private String
mUrl
private android.content.Context
mContext
private String
mContentType
Constructors Summary
ContentLoader(String rawUrl, LoadListener loadListener, android.content.Context context)
Construct a ContentLoader with the specified content URI

param
rawUrl "content:" url pointing to content to be loaded. This url is the same url passed in to the WebView.
param
loadListener LoadListener to pass the content to
param
context Context to use to access the asset.

        super(loadListener);
        mContext = context;

        /* strip off mimetype */
        int mimeIndex = rawUrl.lastIndexOf('?");
        if (mimeIndex != -1) {
            mUrl = rawUrl.substring(0, mimeIndex);
            mContentType = rawUrl.substring(mimeIndex + 1);
        } else {
            mUrl = rawUrl;
        }

    
Methods Summary
protected voidbuildHeaders(android.net.http.Headers headers)

        if (mContentType != null) {
            headers.setContentType("text/html");
        }
        // override the cache-control header set by StreamLoader as content can
        // change, we don't want WebKit to cache it
        headers.setCacheControl("no-store, no-cache");
    
public static voidrequestUrl(java.lang.String url, LoadListener loadListener, android.content.Context context)
Construct a ContentLoader and instruct it to start loading.

param
url "content:" url pointing to content to be loaded
param
loadListener LoadListener to pass the content to
param
context Context to use to access the asset.

        ContentLoader loader = new ContentLoader(url, loadListener, context);
        loader.load();
    
protected booleansetupStreamAndSendStatus()

        Uri uri = Uri.parse(mUrl);
        if (uri == null) {
            mHandler.error(
                    EventHandler.FILE_NOT_FOUND_ERROR,
                    mContext.getString(
                            com.android.internal.R.string.httpErrorBadUrl) +
                    " " + mUrl);
            return false;
        }

        try {
            mDataStream = mContext.getContentResolver().openInputStream(uri);
            mHandler.status(1, 1, 0, "OK");
        } catch (java.io.FileNotFoundException ex) {
            mHandler.error(
                    EventHandler.FILE_NOT_FOUND_ERROR,
                    mContext.getString(
                            com.android.internal.R.string.httpErrorFileNotFound) +
                    " " + ex.getMessage());
            return false;

        } catch (java.io.IOException ex) {
            mHandler.error(
                    EventHandler.FILE_ERROR,
                    mContext.getString(
                            com.android.internal.R.string.httpErrorFileNotFound) +
                    " " + ex.getMessage());
            return false;
        } catch (RuntimeException ex) {
            // readExceptionWithFileNotFoundExceptionFromParcel in DatabaseUtils
            // can throw a serial of RuntimeException. Catch them all here.
            mHandler.error(
                    EventHandler.FILE_ERROR,
                    mContext.getString(
                            com.android.internal.R.string.httpErrorFileNotFound) +
                    " " + ex.getMessage());
            return false;
        }
        return true;