导航菜单

页面标题

页面副标题

万能钥匙 v1.1.23 - ClipboardFileProvider.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");
    }
}