正在查看: 万能钥匙 v1.1.23 应用的 ClipboardFileProvider.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: 万能钥匙 v1.1.23 应用的 ClipboardFileProvider.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package expo.modules.clipboard;
import android.content.ContentProvider;
import android.content.ContentValues;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.pm.ProviderInfo;
import android.content.res.XmlResourceParser;
import android.database.Cursor;
import android.database.MatrixCursor;
import android.net.Uri;
import android.os.Environment;
import android.os.ParcelFileDescriptor;
import android.text.TextUtils;
import android.webkit.MimeTypeMap;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import kotlin.Metadata;
import kotlin.jvm.internal.DefaultConstructorMarker;
import kotlin.jvm.internal.f0;
import kotlin.jvm.internal.n;
import lg0.e0;
import org.xmlpull.v1.XmlPullParserException;
import tj0.t;
import tj0.u;
@Metadata(d1 = {"\u0000f\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u000b\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u000e\n\u0002\b\u0002\n\u0002\u0010\u0011\n\u0002\b\u0004\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0010\b\n\u0002\b\u0005\n\u0002\u0018\u0002\n\u0002\b\u0005\n\u0002\u0018\u0002\n\u0002\b\u0005\u0018\u0000 /2\u00020\u0001:\u0003(,/B\u0007¢\u0006\u0004\b\u0002\u0010\u0003J\u000f\u0010\u0005\u001a\u00020\u0004H\u0016¢\u0006\u0004\b\u0005\u0010\u0006J\u001f\u0010\f\u001a\u00020\u000b2\u0006\u0010\b\u001a\u00020\u00072\u0006\u0010\n\u001a\u00020\tH\u0016¢\u0006\u0004\b\f\u0010\rJ\u0017\u0010\u0011\u001a\u00020\u00102\u0006\u0010\u000f\u001a\u00020\u000eH\u0016¢\u0006\u0004\b\u0011\u0010\u0012JQ\u0010\u0019\u001a\u0004\u0018\u00010\u00182\u0006\u0010\u000f\u001a\u00020\u000e2\u0010\u0010\u0014\u001a\f\u0012\u0006\b\u0001\u0012\u00020\u0010\u0018\u00010\u00132\b\u0010\u0015\u001a\u0004\u0018\u00010\u00102\u0010\u0010\u0016\u001a\f\u0012\u0006\b\u0001\u0012\u00020\u0010\u0018\u00010\u00132\b\u0010\u0017\u001a\u0004\u0018\u00010\u0010H\u0016¢\u0006\u0004\b\u0019\u0010\u001aJ!\u0010\u001d\u001a\u00020\u000e2\u0006\u0010\u000f\u001a\u00020\u000e2\b\u0010\u001c\u001a\u0004\u0018\u00010\u001bH\u0016¢\u0006\u0004\b\u001d\u0010\u001eJ=\u0010 \u001a\u00020\u001f2\u0006\u0010\u000f\u001a\u00020\u000e2\b\u0010\u001c\u001a\u0004\u0018\u00010\u001b2\b\u0010\u0015\u001a\u0004\u0018\u00010\u00102\u0010\u0010\u0016\u001a\f\u0012\u0006\b\u0001\u0012\u00020\u0010\u0018\u00010\u0013H\u0016¢\u0006\u0004\b \u0010!J3\u0010\"\u001a\u00020\u001f2\u0006\u0010\u000f\u001a\u00020\u000e2\b\u0010\u0015\u001a\u0004\u0018\u00010\u00102\u0010\u0010\u0016\u001a\f\u0012\u0006\b\u0001\u0012\u00020\u0010\u0018\u00010\u0013H\u0016¢\u0006\u0004\b\"\u0010#J!\u0010&\u001a\u0004\u0018\u00010%2\u0006\u0010\u000f\u001a\u00020\u000e2\u0006\u0010$\u001a\u00020\u0010H\u0016¢\u0006\u0004\b&\u0010'R\u001a\u0010*\u001a\b\u0012\u0004\u0012\u00020\u00100\u00138\u0002X\u0082\u0004¢\u0006\u0006\n\u0004\b(\u0010)R\u0016\u0010.\u001a\u00020+8\u0002@\u0002X\u0082.¢\u0006\u0006\n\u0004\b,\u0010-¨\u00060"}, d2 = {"Lexpo/modules/clipboard/ClipboardFileProvider;", "Landroid/content/ContentProvider;", "<init>", "()V", "", "onCreate", "()Z", "Landroid/content/Context;", "context", "Landroid/content/pm/ProviderInfo;", "info", "Llg0/e0;", "attachInfo", "(Landroid/content/Context;Landroid/content/pm/ProviderInfo;)V", "Landroid/net/Uri;", "uri", "", "getType", "(Landroid/net/Uri;)Ljava/lang/String;", "", "projection", "selection", "selectionArgs", "sortOrder", "Landroid/database/Cursor;", "query", "(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;", "Landroid/content/ContentValues;", "values", "insert", "(Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri;", "", "update", "(Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I", "delete", "(Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I", "mode", "Landroid/os/ParcelFileDescriptor;", "openFile", "(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;", "a", "[Ljava/lang/String;", "defaultProjectionColumns", "Lexpo/modules/clipboard/ClipboardFileProvider$b;", "b", "Lexpo/modules/clipboard/ClipboardFileProvider$b;", "strategy", "c", "expo-clipboard_release"}, k = 1, mv = {1, 8, 0}, xi = 48)
public final class ClipboardFileProvider extends ContentProvider {
public static final Companion INSTANCE = new Companion(null);
public static final File d = new File("/");
public static final HashMap<String, b> e = new HashMap<>();
public final String[] defaultProjectionColumns = {"_display_name", "_size"};
public b strategy;
@Metadata(d1 = {"\u0000B\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u000e\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0007\n\u0002\u0010\u0011\n\u0002\b\u000f\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0003\b\u0086\u0003\u0018\u00002\u00020\u0001B\t\b\u0002¢\u0006\u0004\b\u0002\u0010\u0003J'\u0010\u000b\u001a\u0004\u0018\u00010\n2\u0006\u0010\u0005\u001a\u00020\u00042\u0006\u0010\u0007\u001a\u00020\u00062\u0006\u0010\t\u001a\u00020\b¢\u0006\u0004\b\u000b\u0010\fJ\u001f\u0010\u000e\u001a\u00020\r2\u0006\u0010\u0005\u001a\u00020\u00042\u0006\u0010\u0007\u001a\u00020\u0006H\u0000¢\u0006\u0004\b\u000e\u0010\u000fJ\u001f\u0010\u0010\u001a\u00020\r2\u0006\u0010\u0005\u001a\u00020\u00042\u0006\u0010\u0007\u001a\u00020\u0006H\u0002¢\u0006\u0004\b\u0010\u0010\u000fJ!\u0010\u0012\u001a\u0004\u0018\u00010\b2\u0006\u0010\u0011\u001a\u00020\u00062\u0006\u0010\u0005\u001a\u00020\u0004H\u0002¢\u0006\u0004\b\u0012\u0010\u0013J/\u0010\u0017\u001a\u00020\b2\u0006\u0010\u0014\u001a\u00020\b2\u0016\u0010\u0016\u001a\f\u0012\b\b\u0001\u0012\u0004\u0018\u00010\u00060\u0015\"\u0004\u0018\u00010\u0006H\u0002¢\u0006\u0004\b\u0017\u0010\u0018R\u0014\u0010\u0019\u001a\u00020\u00068\u0002X\u0082T¢\u0006\u0006\n\u0004\b\u0019\u0010\u001aR\u0014\u0010\u001b\u001a\u00020\u00068\u0002X\u0082T¢\u0006\u0006\n\u0004\b\u001b\u0010\u001aR\u0014\u0010\u001c\u001a\u00020\b8\u0002X\u0082\u0004¢\u0006\u0006\n\u0004\b\u001c\u0010\u001dR\u0014\u0010\u001e\u001a\u00020\u00068\u0002X\u0082T¢\u0006\u0006\n\u0004\b\u001e\u0010\u001aR\u0014\u0010\u001f\u001a\u00020\u00068\u0002X\u0082T¢\u0006\u0006\n\u0004\b\u001f\u0010\u001aR\u0014\u0010 \u001a\u00020\u00068\u0002X\u0082T¢\u0006\u0006\n\u0004\b \u0010\u001aR\u0014\u0010!\u001a\u00020\u00068\u0002X\u0082T¢\u0006\u0006\n\u0004\b!\u0010\u001aR\u0014\u0010\"\u001a\u00020\u00068\u0002X\u0082T¢\u0006\u0006\n\u0004\b\"\u0010\u001aR\u0014\u0010#\u001a\u00020\u00068\u0002X\u0082T¢\u0006\u0006\n\u0004\b#\u0010\u001aR\u0014\u0010$\u001a\u00020\u00068\u0002X\u0082T¢\u0006\u0006\n\u0004\b$\u0010\u001aR0\u0010'\u001a\u001e\u0012\u0004\u0012\u00020\u0006\u0012\u0004\u0012\u00020\r0%j\u000e\u0012\u0004\u0012\u00020\u0006\u0012\u0004\u0012\u00020\r`&8\u0002X\u0082\u0004¢\u0006\u0006\n\u0004\b'\u0010(¨\u0006)"}, d2 = {"Lexpo/modules/clipboard/ClipboardFileProvider$a;", "", "<init>", "()V", "Landroid/content/Context;", "context", "", "authority", "Ljava/io/File;", "file", "Landroid/net/Uri;", "c", "(Landroid/content/Context;Ljava/lang/String;Ljava/io/File;)Landroid/net/Uri;", "Lexpo/modules/clipboard/ClipboardFileProvider$b;", "b", "(Landroid/content/Context;Ljava/lang/String;)Lexpo/modules/clipboard/ClipboardFileProvider$b;", "d", "tag", "e", "(Ljava/lang/String;Landroid/content/Context;)Ljava/io/File;", "base", "", "segments", "a", "(Ljava/io/File;[Ljava/lang/String;)Ljava/io/File;", "ATTR_NAME", "Ljava/lang/String;", "ATTR_PATH", "DEVICE_ROOT", "Ljava/io/File;", "META_DATA_FILE_PROVIDER_PATHS", "TAG_CACHE_PATH", "TAG_EXTERNAL", "TAG_EXTERNAL_CACHE", "TAG_EXTERNAL_FILES", "TAG_FILES_PATH", "TAG_ROOT_PATH", "Ljava/util/HashMap;", "Lkotlin/collections/HashMap;", "cache", "Ljava/util/HashMap;", "expo-clipboard_release"}, k = 1, mv = {1, 8, 0}, xi = 48)
public static final class Companion {
public Companion() {
}
public Companion(DefaultConstructorMarker defaultConstructorMarker) {
this();
}
public final File a(File base, String... segments) {
for (String str : segments) {
if (str != null) {
base = new File(base, str);
}
}
return base;
}
public final b b(Context context, String authority) {
T t;
n.i(context, "context");
n.i(authority, "authority");
f0 f0Var = new f0();
synchronized (ClipboardFileProvider.e) {
try {
b bVar = (b) ClipboardFileProvider.e.get(authority);
t = bVar;
if (bVar == null) {
try {
f0Var.a = ClipboardFileProvider.INSTANCE.d(context, authority);
ClipboardFileProvider.e.put(authority, f0Var.a);
t = (b) f0Var.a;
} catch (IOException e) {
throw new IllegalArgumentException("Failed to parse expo.modules.clipboard.CLIPBOARD_FILE_PROVIDER_PATHS meta-data", e);
} catch (XmlPullParserException e2) {
throw new IllegalArgumentException("Failed to parse expo.modules.clipboard.CLIPBOARD_FILE_PROVIDER_PATHS meta-data", e2);
}
}
f0Var.a = t;
e0 e0Var = e0.a;
} catch (Throwable th) {
throw th;
}
}
return (b) t;
}
public final Uri c(Context context, String authority, File file) {
n.i(context, "context");
n.i(authority, "authority");
n.i(file, "file");
return b(context, authority).a(file);
}
public final b d(Context context, String authority) throws IOException, XmlPullParserException {
c cVar = new c(authority);
PackageManager packageManager = context.getPackageManager();
ProviderInfo resolveContentProvider = packageManager.resolveContentProvider(authority, 128);
if (resolveContentProvider == null) {
throw new IllegalArgumentException("Couldn't find meta-data for provider with authority " + authority);
}
XmlResourceParser loadXmlMetaData = resolveContentProvider.loadXmlMetaData(packageManager, "expo.modules.clipboard.CLIPBOARD_FILE_PROVIDER_PATHS");
if (loadXmlMetaData == null) {
throw new IllegalArgumentException("Missing expo.modules.clipboard.CLIPBOARD_FILE_PROVIDER_PATHS meta-data");
}
while (true) {
int next = loadXmlMetaData.next();
if (next == 1) {
return cVar;
}
if (next == 2) {
String tag = loadXmlMetaData.getName();
n.h(tag, "tag");
File e = e(tag, context);
if (e != null) {
cVar.c(loadXmlMetaData.getAttributeValue(null, "name"), ClipboardFileProvider.INSTANCE.a(e, loadXmlMetaData.getAttributeValue(null, "path")));
}
}
}
}
public final File e(String tag, Context context) {
switch (tag.hashCode()) {
case -1642807877:
if (tag.equals("files-path")) {
return context.getFilesDir();
}
return null;
case -1360690478:
if (tag.equals("external-cache-path")) {
File[] externalCacheDirs = context.getExternalCacheDirs();
n.h(externalCacheDirs, "context.externalCacheDirs");
if (externalCacheDirs.length == 0) {
externalCacheDirs = null;
}
if (externalCacheDirs != null) {
return externalCacheDirs[0];
}
return null;
}
return null;
case -913292752:
if (tag.equals("root-path")) {
return ClipboardFileProvider.d;
}
return null;
case -50149145:
if (tag.equals("external-path")) {
return Environment.getExternalStorageDirectory();
}
return null;
case -17221744:
if (tag.equals("cache-path")) {
return context.getCacheDir();
}
return null;
case 1308690685:
if (tag.equals("external-files-path")) {
File[] externalFilesDirs = context.getExternalFilesDirs(null);
n.h(externalFilesDirs, "context.getExternalFilesDirs(null)");
if (externalFilesDirs.length == 0) {
externalFilesDirs = null;
}
if (externalFilesDirs != null) {
return externalFilesDirs[0];
}
return null;
}
return null;
default:
return null;
}
}
}
@Metadata(d1 = {"\u0000\u0016\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0006\b`\u0018\u00002\u00020\u0001J\u0019\u0010\u0005\u001a\u0004\u0018\u00010\u00042\u0006\u0010\u0003\u001a\u00020\u0002H&¢\u0006\u0004\b\u0005\u0010\u0006J\u0017\u0010\b\u001a\u00020\u00022\u0006\u0010\u0007\u001a\u00020\u0004H&¢\u0006\u0004\b\b\u0010\t¨\u0006\n"}, d2 = {"Lexpo/modules/clipboard/ClipboardFileProvider$b;", "", "Ljava/io/File;", "file", "Landroid/net/Uri;", "a", "(Ljava/io/File;)Landroid/net/Uri;", "uri", "b", "(Landroid/net/Uri;)Ljava/io/File;", "expo-clipboard_release"}, k = 1, mv = {1, 8, 0}, xi = 48)
public interface b {
Uri a(File file);
File b(Uri uri);
}
@Metadata(d1 = {"\u00002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0010\u000e\n\u0002\b\u0004\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\b\u0006\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0003\b\u0000\u0018\u00002\u00020\u0001B\u000f\u0012\u0006\u0010\u0003\u001a\u00020\u0002¢\u0006\u0004\b\u0004\u0010\u0005J\u001f\u0010\n\u001a\u00020\t2\b\u0010\u0006\u001a\u0004\u0018\u00010\u00022\u0006\u0010\b\u001a\u00020\u0007¢\u0006\u0004\b\n\u0010\u000bJ\u0019\u0010\u000e\u001a\u0004\u0018\u00010\r2\u0006\u0010\f\u001a\u00020\u0007H\u0016¢\u0006\u0004\b\u000e\u0010\u000fJ\u0017\u0010\u0011\u001a\u00020\u00072\u0006\u0010\u0010\u001a\u00020\rH\u0016¢\u0006\u0004\b\u0011\u0010\u0012R\u0014\u0010\u0003\u001a\u00020\u00028\u0002X\u0082\u0004¢\u0006\u0006\n\u0004\b\u000e\u0010\u0013R0\u0010\u0017\u001a\u001e\u0012\u0004\u0012\u00020\u0002\u0012\u0004\u0012\u00020\u00070\u0014j\u000e\u0012\u0004\u0012\u00020\u0002\u0012\u0004\u0012\u00020\u0007`\u00158\u0002X\u0082\u0004¢\u0006\u0006\n\u0004\b\u0011\u0010\u0016¨\u0006\u0018"}, d2 = {"Lexpo/modules/clipboard/ClipboardFileProvider$c;", "Lexpo/modules/clipboard/ClipboardFileProvider$b;", "", "authority", "<init>", "(Ljava/lang/String;)V", "name", "Ljava/io/File;", "root", "Llg0/e0;", "c", "(Ljava/lang/String;Ljava/io/File;)V", "file", "Landroid/net/Uri;", "a", "(Ljava/io/File;)Landroid/net/Uri;", "uri", "b", "(Landroid/net/Uri;)Ljava/io/File;", "Ljava/lang/String;", "Ljava/util/HashMap;", "Lkotlin/collections/HashMap;", "Ljava/util/HashMap;", "roots", "expo-clipboard_release"}, k = 1, mv = {1, 8, 0}, xi = 48)
public static final class c implements b {
public final String authority;
public final HashMap<String, File> roots;
public c(String authority) {
n.i(authority, "authority");
this.authority = authority;
this.roots = new HashMap<>();
}
@Override
public Uri a(File file) {
String substring;
n.i(file, "file");
try {
String canonicalPath = file.getCanonicalPath();
n.h(canonicalPath, "{\n file.canonicalPath\n }");
Map.Entry<String, File> entry = null;
for (Map.Entry<String, File> entry2 : this.roots.entrySet()) {
String rootPath = entry2.getValue().getPath();
n.h(rootPath, "rootPath");
if (t.L(canonicalPath, rootPath, false, 2, null) && (entry == null || rootPath.length() > entry.getValue().getPath().length())) {
entry = entry2;
}
}
if (entry == null) {
throw new IllegalArgumentException(("Failed to find configured root that contains " + ((Object) canonicalPath)).toString());
}
String rootPath2 = entry.getValue().getPath();
n.h(rootPath2, "rootPath");
if (t.u(rootPath2, "/", false, 2, null)) {
substring = canonicalPath.substring(rootPath2.length());
n.h(substring, "this as java.lang.String).substring(startIndex)");
} else {
substring = canonicalPath.substring(rootPath2.length() + 1);
n.h(substring, "this as java.lang.String).substring(startIndex)");
}
return new Uri.Builder().scheme("content").authority(this.authority).encodedPath(Uri.encode(entry.getKey()) + "/" + Uri.encode(substring, "/")).build();
} catch (IOException unused) {
throw new IllegalArgumentException("Failed to resolve canonical path for " + file);
}
}
@Override
public File b(Uri uri) {
n.i(uri, "uri");
String encodedPath = uri.getEncodedPath();
n.f(encodedPath);
int c0 = u.c0(encodedPath, '/', 1, false, 4, null);
String substring = encodedPath.substring(1, c0);
n.h(substring, "this as java.lang.String…ing(startIndex, endIndex)");
String decode = Uri.decode(substring);
String substring2 = encodedPath.substring(c0 + 1);
n.h(substring2, "this as java.lang.String).substring(startIndex)");
String decode2 = Uri.decode(substring2);
n.h(decode2, "decode(path.substring(splitIndex + 1))");
File file = this.roots.get(decode);
if (file == null) {
throw new IllegalArgumentException("Unable to find configured root for " + uri);
}
File file2 = new File(file, decode2);
try {
File canonicalFile = file2.getCanonicalFile();
n.h(canonicalFile, "{\n file.canonicalFile\n }");
if (yg0.n.B(canonicalFile, file)) {
return canonicalFile;
}
throw new SecurityException("Resolved path jumped beyond configured root");
} catch (IOException unused) {
throw new IllegalArgumentException("Failed to resolve canonical path for " + file2);
}
}
public final void c(String name, File root) {
n.i(root, "root");
if (name == null || TextUtils.isEmpty(name)) {
throw new IllegalArgumentException("Name must not be empty");
}
try {
File newRoot = root.getCanonicalFile();
HashMap<String, File> hashMap = this.roots;
n.h(newRoot, "newRoot");
hashMap.put(name, newRoot);
} catch (IOException e) {
throw new IllegalArgumentException("Failed to resolve canonical path for " + root, e);
}
}
}
@Override
public void attachInfo(Context context, ProviderInfo info) {
n.i(context, "context");
n.i(info, "info");
super.attachInfo(context, info);
if (!info.exported) {
throw new AssertionError("ClipboardFileProvider must be exported");
}
Companion companion = INSTANCE;
String str = info.authority;
n.h(str, "info.authority");
this.strategy = companion.b(context, str);
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
n.i(uri, "uri");
throw new UnsupportedOperationException("This is a read-only provider");
}
@Override
public String getType(Uri uri) {
n.i(uri, "uri");
b bVar = this.strategy;
if (bVar == null) {
n.z("strategy");
bVar = null;
}
File b2 = bVar.b(uri);
String name = b2.getName();
n.h(name, "file.name");
int h0 = u.h0(name, '.', 0, false, 6, null);
if (h0 < 0) {
return "application/octet-stream";
}
String name2 = b2.getName();
n.h(name2, "file.name");
String substring = name2.substring(h0 + 1);
n.h(substring, "this as java.lang.String).substring(startIndex)");
String mimeTypeFromExtension = MimeTypeMap.getSingleton().getMimeTypeFromExtension(substring);
return mimeTypeFromExtension != null ? mimeTypeFromExtension : "application/octet-stream";
}
@Override
public Uri insert(Uri uri, ContentValues values) {
n.i(uri, "uri");
throw new UnsupportedOperationException("This is a read-only provider");
}
@Override
public boolean onCreate() {
return true;
}
@Override
public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
n.i(uri, "uri");
n.i(mode, "mode");
if (!n.d("r", mode)) {
throw new IllegalArgumentException("mode must be \"r\"");
}
b bVar = this.strategy;
if (bVar == null) {
n.z("strategy");
bVar = null;
}
return ParcelFileDescriptor.open(bVar.b(uri), 268435456);
}
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
int i;
n.i(uri, "uri");
if (projection == null) {
projection = this.defaultProjectionColumns;
}
b bVar = this.strategy;
if (bVar == null) {
n.z("strategy");
bVar = null;
}
File b2 = bVar.b(uri);
String[] strArr = new String[projection.length];
Object[] objArr = new Object[projection.length];
int i2 = 0;
for (String str : projection) {
if (n.d(str, "_display_name")) {
strArr[i2] = "_display_name";
i = i2 + 1;
objArr[i2] = b2.getName();
} else if (n.d(str, "_size")) {
strArr[i2] = "_size";
i = i2 + 1;
objArr[i2] = Long.valueOf(b2.length());
}
i2 = i;
}
Object[] copyOf = Arrays.copyOf(strArr, i2);
n.h(copyOf, "copyOf(this, newSize)");
Object[] copyOf2 = Arrays.copyOf(objArr, i2);
n.h(copyOf2, "copyOf(this, newSize)");
MatrixCursor matrixCursor = new MatrixCursor((String[]) copyOf, 1);
matrixCursor.addRow(copyOf2);
return matrixCursor;
}
@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
n.i(uri, "uri");
throw new UnsupportedOperationException("This is a read-only provider");
}
}