98 lines
3.2 KiB
Java
98 lines
3.2 KiB
Java
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;
|
|
}
|
|
}
|
|
}
|