package com.bumptech.glide.load.model; import android.content.ContentResolver; import android.content.Context; import android.net.Uri; import com.bumptech.glide.load.data.DataFetcher; public abstract class UriLoader implements ModelLoader{ private final Context context; private final ModelLoader urlLoader; public UriLoader(Context context, ModelLoader urlLoader) { this.context = context; this.urlLoader = urlLoader; } @Override public final DataFetcher getResourceFetcher(Uri model, int width, int height) { final String scheme = model.getScheme(); DataFetcher result = null; if (isLocalUri(scheme)) { result = getLocalUriFetcher(context, model); } else if (urlLoader != null && ("http".equals(scheme) || "https".equals(scheme))) { result = urlLoader.getResourceFetcher(new GlideUrl(model.toString()), width, height); } return result; } protected abstract DataFetcher getLocalUriFetcher(Context context, Uri uri); private boolean isLocalUri(String scheme) { return ContentResolver.SCHEME_FILE.equals(scheme) || ContentResolver.SCHEME_CONTENT.equals(scheme) || ContentResolver.SCHEME_ANDROID_RESOURCE.equals(scheme); } }