Initial commit
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
package com.bumptech.glide.load.model;
|
||||
|
||||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.net.Uri;
|
||||
import android.text.TextUtils;
|
||||
import com.bumptech.glide.Priority;
|
||||
import com.bumptech.glide.load.DataSource;
|
||||
import com.bumptech.glide.load.Options;
|
||||
import com.bumptech.glide.load.data.DataFetcher;
|
||||
import com.bumptech.glide.load.data.mediastore.MediaStoreUtil;
|
||||
import com.bumptech.glide.load.model.ModelLoader;
|
||||
import com.bumptech.glide.signature.ObjectKey;
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public final class MediaStoreFileLoader implements ModelLoader<Uri, File> {
|
||||
private final Context a;
|
||||
|
||||
public static final class Factory implements ModelLoaderFactory<Uri, File> {
|
||||
private final Context a;
|
||||
|
||||
public Factory(Context context) {
|
||||
this.a = context;
|
||||
}
|
||||
|
||||
@Override // com.bumptech.glide.load.model.ModelLoaderFactory
|
||||
public ModelLoader<Uri, File> a(MultiModelLoaderFactory multiModelLoaderFactory) {
|
||||
return new MediaStoreFileLoader(this.a);
|
||||
}
|
||||
|
||||
@Override // com.bumptech.glide.load.model.ModelLoaderFactory
|
||||
public void a() {
|
||||
}
|
||||
}
|
||||
|
||||
public MediaStoreFileLoader(Context context) {
|
||||
this.a = context;
|
||||
}
|
||||
|
||||
@Override // com.bumptech.glide.load.model.ModelLoader
|
||||
public ModelLoader.LoadData<File> a(Uri uri, int i, int i2, Options options) {
|
||||
return new ModelLoader.LoadData<>(new ObjectKey(uri), new FilePathFetcher(this.a, uri));
|
||||
}
|
||||
|
||||
@Override // com.bumptech.glide.load.model.ModelLoader
|
||||
public boolean a(Uri uri) {
|
||||
return MediaStoreUtil.b(uri);
|
||||
}
|
||||
|
||||
private static class FilePathFetcher implements DataFetcher<File> {
|
||||
private static final String[] c = {"_data"};
|
||||
private final Context a;
|
||||
private final Uri b;
|
||||
|
||||
FilePathFetcher(Context context, Uri uri) {
|
||||
this.a = context;
|
||||
this.b = uri;
|
||||
}
|
||||
|
||||
@Override // com.bumptech.glide.load.data.DataFetcher
|
||||
public void a(Priority priority, DataFetcher.DataCallback<? super File> dataCallback) {
|
||||
Cursor query = this.a.getContentResolver().query(this.b, c, null, null, null);
|
||||
if (query != null) {
|
||||
try {
|
||||
r0 = query.moveToFirst() ? query.getString(query.getColumnIndexOrThrow("_data")) : null;
|
||||
} finally {
|
||||
query.close();
|
||||
}
|
||||
}
|
||||
if (!TextUtils.isEmpty(r0)) {
|
||||
dataCallback.a((DataFetcher.DataCallback<? super File>) new File(r0));
|
||||
return;
|
||||
}
|
||||
dataCallback.a((Exception) new FileNotFoundException("Failed to find file path for: " + this.b));
|
||||
}
|
||||
|
||||
@Override // com.bumptech.glide.load.data.DataFetcher
|
||||
public void b() {
|
||||
}
|
||||
|
||||
@Override // com.bumptech.glide.load.data.DataFetcher
|
||||
public void cancel() {
|
||||
}
|
||||
|
||||
@Override // com.bumptech.glide.load.data.DataFetcher
|
||||
public DataSource getDataSource() {
|
||||
return DataSource.LOCAL;
|
||||
}
|
||||
|
||||
@Override // com.bumptech.glide.load.data.DataFetcher
|
||||
public Class<File> a() {
|
||||
return File.class;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user