Info Call to External Storage API

Description

List of all external storage API calls. Insecure storage of sensitive information by setting insecure permissions or storing data without encryption might expose this information to an attacker.

Recommendation

This entry is informative, no recommendations applicable.

Technical details

Method okio.Okio.sink() calling method java.io.FileOutputStream.<init>()


    public static okio.Sink sink(java.io.File p1)
    {
        if (p1 == null) {
            throw new IllegalArgumentException("file == null");
        } else {
            return okio.Okio.sink(new java.io.FileOutputStream(p1));
        }
    }

Method okio.Okio.appendingSink() calling method java.io.FileOutputStream.<init>()


    public static okio.Sink appendingSink(java.io.File p2)
    {
        if (p2 == null) {
            throw new IllegalArgumentException("file == null");
        } else {
            return okio.Okio.sink(new java.io.FileOutputStream(p2, 1));
        }
    }

Method android.support.v4.util.AtomicFile.startWrite() calling method java.io.FileOutputStream.<init>()

Couldn't retrieve source code

Method android.support.v4.print.PrintHelper$1.doInBackground() calling method java.io.FileOutputStream.<init>()


    protected varargs Throwable doInBackground(Void[] p8)
    {
        try {
            if (!this.val$cancellationSignal.isCanceled()) {
                android.graphics.Bitmap v8_10 = new android.print.pdf.PrintedPdfDocument(this.this$0.mContext, this.val$pdfAttributes);
                android.graphics.Bitmap v1_1 = android.support.v4.print.PrintHelper.convertBitmapForColorMode(this.val$bitmap, this.val$pdfAttributes.getColorMode());
                if (!this.val$cancellationSignal.isCanceled()) {
                    try {
                        java.io.FileOutputStream v2_6;
                        java.io.FileDescriptor v3_0 = v8_10.startPage(1);
                    } catch (Throwable v0_1) {
                        v8_10.close();
                        if (this.val$fileDescriptor != null) {
                            this.val$fileDescriptor.close();
                        }
                        if (v1_1 != this.val$bitmap) {
                            v1_1.recycle();
                        }
                        throw v0_1;
                    }
                    if (!android.support.v4.print.PrintHelper.IS_MIN_MARGINS_HANDLING_CORRECT) {
                        android.graphics.Matrix v4_2 = new android.print.pdf.PrintedPdfDocument(this.this$0.mContext, this.val$attributes);
                        java.io.FileOutputStream v2_5 = v4_2.startPage(1);
                        android.graphics.Canvas v5_3 = new android.graphics.RectF(v2_5.getInfo().getContentRect());
                        v4_2.finishPage(v2_5);
                        v4_2.close();
                        v2_6 = v5_3;
                    } else {
                        v2_6 = new android.graphics.RectF(v3_0.getInfo().getContentRect());
                    }
                    android.graphics.Matrix v4_6 = android.support.v4.print.PrintHelper.getMatrix(v1_1.getWidth(), v1_1.getHeight(), v2_6, this.val$fittingMode);
                    if (!android.support.v4.print.PrintHelper.IS_MIN_MARGINS_HANDLING_CORRECT) {
                        v4_6.postTranslate(v2_6.left, v2_6.top);
                        v3_0.getCanvas().clipRect(v2_6);
                    } else {
                    }
                    v3_0.getCanvas().drawBitmap(v1_1, v4_6, 0);
                    v8_10.finishPage(v3_0);
                    if (!this.val$cancellationSignal.isCanceled()) {
                        v8_10.writeTo(new java.io.FileOutputStream(this.val$fileDescriptor.getFileDescriptor()));
                        v8_10.close();
                        if (this.val$fileDescriptor != null) {
                            this.val$fileDescriptor.close();
                        }
                        if (v1_1 != this.val$bitmap) {
                            v1_1.recycle();
                        }
                        return 0;
                    } else {
                        v8_10.close();
                        if (this.val$fileDescriptor != null) {
                            this.val$fileDescriptor.close();
                        }
                        if (v1_1 != this.val$bitmap) {
                            v1_1.recycle();
                        }
                        return 0;
                    }
                } else {
                    return 0;
                }
            } else {
                return 0;
            }
        } catch (android.graphics.Bitmap v8_2) {
            return v8_2;
        }
    }

Method android.support.v4.graphics.TypefaceCompatUtil.copyToFile() calling method java.io.FileOutputStream.<init>()


    public static boolean copyToFile(java.io.File p5, java.io.InputStream p6)
    {
        android.os.StrictMode$ThreadPolicy v0 = android.os.StrictMode.allowThreadDiskWrites();
        int v2_1 = 0;
        try {
            StringBuilder v3_3 = new java.io.FileOutputStream(p5, 0);
            try {
                int v5_7 = new byte[1024];
            } catch (int v5_4) {
                v2_1 = v3_3;
                android.support.v4.graphics.TypefaceCompatUtil.closeQuietly(v2_1);
                android.os.StrictMode.setThreadPolicy(v0);
                throw v5_4;
            } catch (int v5_1) {
                v2_1 = v3_3;
                StringBuilder v3_1 = new StringBuilder();
                v3_1.append("Error copying resource contents to temp file: ");
                v3_1.append(v5_1.getMessage());
                android.util.Log.e("TypefaceCompatUtil", v3_1.toString());
                android.support.v4.graphics.TypefaceCompatUtil.closeQuietly(v2_1);
                android.os.StrictMode.setThreadPolicy(v0);
                return 0;
            }
            while(true) {
                int v2_0 = p6.read(v5_7);
                if (v2_0 == -1) {
                    break;
                }
                v3_3.write(v5_7, 0, v2_0);
            }
            android.support.v4.graphics.TypefaceCompatUtil.closeQuietly(v3_3);
            android.os.StrictMode.setThreadPolicy(v0);
            return 1;
        } catch (int v5_4) {
        } catch (int v5_1) {
            v3_1 = new StringBuilder();
            v3_1.append("Error copying resource contents to temp file: ");
            v3_1.append(v5_1.getMessage());
            android.util.Log.e("TypefaceCompatUtil", v3_1.toString());
            android.support.v4.graphics.TypefaceCompatUtil.closeQuietly(v2_1);
            android.os.StrictMode.setThreadPolicy(v0);
            return 0;
        }
    }

Method android.support.v4.graphics.drawable.IconCompat.loadDrawableInner() calling method java.io.FileInputStream.<init>()


    private android.graphics.drawable.Drawable loadDrawableInner(android.content.Context p7)
    {
        switch (this.mType) {
            case 1:
                return new android.graphics.drawable.BitmapDrawable(p7.getResources(), ((android.graphics.Bitmap) this.mObj1));
            case 2:
                android.graphics.Bitmap v0_14 = this.getResPackage();
                if (android.text.TextUtils.isEmpty(v0_14)) {
                    v0_14 = p7.getPackageName();
                }
                try {
                    return android.support.v4.content.res.ResourcesCompat.getDrawable(android.support.v4.graphics.drawable.IconCompat.getResources(p7, v0_14), this.mInt1, p7.getTheme());
                } catch (android.content.res.Resources v7_7) {
                    StringBuilder v4_7 = new Object[2];
                    v4_7[0] = Integer.valueOf(this.mInt1);
                    v4_7[1] = this.mObj1;
                    android.util.Log.e("IconCompat", String.format("Unable to load resource 0x%08x from pkg=%s", v4_7), v7_7);
                }
            case 3:
                return new android.graphics.drawable.BitmapDrawable(p7.getResources(), android.graphics.BitmapFactory.decodeByteArray(((byte[]) this.mObj1), this.mInt1, this.mInt2));
            case 4:
                android.graphics.Bitmap v0_7;
                android.graphics.Bitmap v0_6 = android.net.Uri.parse(((String) this.mObj1));
                android.graphics.drawable.BitmapDrawable v1_6 = v0_6.getScheme();
                if ((!"content".equals(v1_6)) && (!"file".equals(v1_6))) {
                    try {
                        v0_7 = new java.io.FileInputStream(new java.io.File(((String) this.mObj1)));
                    } catch (android.graphics.drawable.BitmapDrawable v1_10) {
                        StringBuilder v4_3 = new StringBuilder();
                        v4_3.append("Unable to load image from path: ");
                        v4_3.append(v0_7);
                        android.util.Log.w("IconCompat", v4_3.toString(), v1_10);
                        v0_7 = 0;
                    }
                } else {
                    try {
                        v0_7 = p7.getContentResolver().openInputStream(v0_6);
                    } catch (android.graphics.drawable.BitmapDrawable v1_12) {
                        StringBuilder v4_5 = new StringBuilder();
                        v4_5.append("Unable to load image from URI: ");
                        v4_5.append(v0_7);
                        android.util.Log.w("IconCompat", v4_5.toString(), v1_12);
                    }
                }
                if (v0_7 == null) {
                } else {
                    return new android.graphics.drawable.BitmapDrawable(p7.getResources(), android.graphics.BitmapFactory.decodeStream(v0_7));
                }
            case 5:
                return new android.graphics.drawable.BitmapDrawable(p7.getResources(), android.support.v4.graphics.drawable.IconCompat.createLegacyIconFromAdaptiveIcon(((android.graphics.Bitmap) this.mObj1), 0));
            default:
        }
        return 0;
    }

Method android.support.v4.graphics.TypefaceCompatApi21Impl.createFromFontInfo() calling method java.io.FileInputStream.<init>()


    public android.graphics.Typeface createFromFontInfo(android.content.Context p5, android.os.CancellationSignal p6, android.support.v4.provider.FontsContractCompat$FontInfo[] p7, int p8)
    {
        if (p7.length >= 1) {
            try {
                android.os.ParcelFileDescriptor v6_1 = p5.getContentResolver().openFileDescriptor(this.findBestInfo(p7, p8).getUri(), "r", p6);
                try {
                    android.graphics.Typeface v7_1 = this.getFile(v6_1);
                } catch (Throwable v5_6) {
                    android.graphics.Typeface v7_5 = 0;
                    if (v6_1 != null) {
                        if (v7_5 == null) {
                            v6_1.close();
                        } else {
                            v6_1.close();
                        }
                    }
                    throw v5_6;
                } catch (Throwable v5_5) {
                    try {
                        throw v5_5;
                    } catch (android.graphics.Typeface v7_4) {
                        v7_5 = v5_5;
                        v5_6 = v7_4;
                    }
                }
                if (v7_1 != null) {
                    if (v7_1.canRead()) {
                        Throwable v5_1 = android.graphics.Typeface.createFromFile(v7_1);
                        if (v6_1 != null) {
                            v6_1.close();
                        }
                        return v5_1;
                    } else {
                    }
                }
                android.graphics.Typeface v7_3 = new java.io.FileInputStream(v6_1.getFileDescriptor());
                try {
                    Throwable v5_2 = super.createFromInputStream(p5, v7_3);
                } catch (Throwable v5_4) {
                    Throwable v8_4 = 0;
                    if (v8_4 == null) {
                        v7_3.close();
                    } else {
                        v7_3.close();
                    }
                    throw v5_4;
                } catch (Throwable v5_3) {
                    try {
                        throw v5_3;
                    } catch (Throwable v8_3) {
                        v8_4 = v5_3;
                        v5_4 = v8_3;
                    }
                }
                v7_3.close();
                if (v6_1 != null) {
                    v6_1.close();
                }
                return v5_2;
            } catch (java.io.IOException) {
                return 0;
            }
        } else {
            return 0;
        }
    }

Method okio.Okio.source() calling method java.io.FileInputStream.<init>()


    public static okio.Source source(java.io.File p1)
    {
        if (p1 == null) {
            throw new IllegalArgumentException("file == null");
        } else {
            return okio.Okio.source(new java.io.FileInputStream(p1));
        }
    }

Method android.support.v4.util.AtomicFile.openRead() calling method java.io.FileInputStream.<init>()


    public java.io.FileInputStream openRead()
    {
        if (this.mBackupName.exists()) {
            this.mBaseName.delete();
            this.mBackupName.renameTo(this.mBaseName);
        }
        return new java.io.FileInputStream(this.mBaseName);
    }

Method android.support.v4.graphics.TypefaceCompatUtil.mmap() calling method java.io.FileInputStream.<init>()


    private static java.nio.ByteBuffer mmap(java.io.File p9)
    {
        try {
            java.io.FileInputStream v1_1 = new java.io.FileInputStream(p9);
            try {
                Throwable v2_2 = v1_1.getChannel();
                Throwable v9_1 = v2_2.map(java.nio.channels.FileChannel$MapMode.READ_ONLY, 0, v2_2.size());
            } catch (Throwable v9_3) {
                Throwable v2_1 = 0;
                if (v2_1 == null) {
                    v1_1.close();
                } else {
                    v1_1.close();
                }
                throw v9_3;
            } catch (Throwable v9_2) {
                try {
                    throw v9_2;
                } catch (Throwable v2_0) {
                    v2_1 = v9_2;
                    v9_3 = v2_0;
                }
            }
            v1_1.close();
            return v9_1;
        } catch (java.io.IOException) {
            return 0;
        }
    }

Method android.support.v4.graphics.TypefaceCompatUtil.mmap() calling method java.io.FileInputStream.<init>()


    public static java.nio.ByteBuffer mmap(android.content.Context p8, android.os.CancellationSignal p9, android.net.Uri p10)
    {
        try {
            android.os.ParcelFileDescriptor v8_2 = p8.getContentResolver().openFileDescriptor(p10, "r", p9);
        } catch (java.io.IOException) {
            return 0;
        }
        if (v8_2 != null) {
            try {
                Throwable v9_1 = new java.io.FileInputStream(v8_2.getFileDescriptor());
                try {
                    Throwable v1_0 = v9_1.getChannel();
                    Throwable v10_1 = v1_0.map(java.nio.channels.FileChannel$MapMode.READ_ONLY, 0, v1_0.size());
                } catch (Throwable v10_3) {
                    Throwable v1_2 = 0;
                    if (v1_2 == null) {
                        v9_1.close();
                    } else {
                        v9_1.close();
                    }
                    throw v10_3;
                } catch (Throwable v10_2) {
                    try {
                        throw v10_2;
                    } catch (Throwable v1_1) {
                        v1_2 = v10_2;
                        v10_3 = v1_1;
                    }
                }
                v9_1.close();
                if (v8_2 != null) {
                    v8_2.close();
                }
                return v10_1;
            } catch (Throwable v9_3) {
                Throwable v10_5 = 0;
                if (v8_2 != null) {
                    if (v10_5 == null) {
                        v8_2.close();
                    } else {
                        v8_2.close();
                    }
                }
                throw v9_3;
            } catch (Throwable v9_2) {
                try {
                    throw v9_2;
                } catch (Throwable v10_4) {
                    v10_5 = v9_2;
                    v9_3 = v10_4;
                }
            }
        } else {
            if (v8_2 != null) {
                v8_2.close();
            }
            return 0;
        }
    }

Method android.support.v4.graphics.drawable.IconCompat.loadDrawableInner() calling method java.io.File.<init>()


    private android.graphics.drawable.Drawable loadDrawableInner(android.content.Context p7)
    {
        switch (this.mType) {
            case 1:
                return new android.graphics.drawable.BitmapDrawable(p7.getResources(), ((android.graphics.Bitmap) this.mObj1));
            case 2:
                android.graphics.Bitmap v0_14 = this.getResPackage();
                if (android.text.TextUtils.isEmpty(v0_14)) {
                    v0_14 = p7.getPackageName();
                }
                try {
                    return android.support.v4.content.res.ResourcesCompat.getDrawable(android.support.v4.graphics.drawable.IconCompat.getResources(p7, v0_14), this.mInt1, p7.getTheme());
                } catch (android.content.res.Resources v7_7) {
                    StringBuilder v4_7 = new Object[2];
                    v4_7[0] = Integer.valueOf(this.mInt1);
                    v4_7[1] = this.mObj1;
                    android.util.Log.e("IconCompat", String.format("Unable to load resource 0x%08x from pkg=%s", v4_7), v7_7);
                }
            case 3:
                return new android.graphics.drawable.BitmapDrawable(p7.getResources(), android.graphics.BitmapFactory.decodeByteArray(((byte[]) this.mObj1), this.mInt1, this.mInt2));
            case 4:
                android.graphics.Bitmap v0_7;
                android.graphics.Bitmap v0_6 = android.net.Uri.parse(((String) this.mObj1));
                android.graphics.drawable.BitmapDrawable v1_6 = v0_6.getScheme();
                if ((!"content".equals(v1_6)) && (!"file".equals(v1_6))) {
                    try {
                        v0_7 = new java.io.FileInputStream(new java.io.File(((String) this.mObj1)));
                    } catch (android.graphics.drawable.BitmapDrawable v1_10) {
                        StringBuilder v4_3 = new StringBuilder();
                        v4_3.append("Unable to load image from path: ");
                        v4_3.append(v0_7);
                        android.util.Log.w("IconCompat", v4_3.toString(), v1_10);
                        v0_7 = 0;
                    }
                } else {
                    try {
                        v0_7 = p7.getContentResolver().openInputStream(v0_6);
                    } catch (android.graphics.drawable.BitmapDrawable v1_12) {
                        StringBuilder v4_5 = new StringBuilder();
                        v4_5.append("Unable to load image from URI: ");
                        v4_5.append(v0_7);
                        android.util.Log.w("IconCompat", v4_5.toString(), v1_12);
                    }
                }
                if (v0_7 == null) {
                } else {
                    return new android.graphics.drawable.BitmapDrawable(p7.getResources(), android.graphics.BitmapFactory.decodeStream(v0_7));
                }
            case 5:
                return new android.graphics.drawable.BitmapDrawable(p7.getResources(), android.support.v4.graphics.drawable.IconCompat.createLegacyIconFromAdaptiveIcon(((android.graphics.Bitmap) this.mObj1), 0));
            default:
        }
        return 0;
    }

Method android.support.v4.provider.RawDocumentFile.renameTo() calling method java.io.File.<init>()


    public boolean renameTo(String p3)
    {
        java.io.File v0_1 = new java.io.File(this.mFile.getParentFile(), p3);
        if (!this.mFile.renameTo(v0_1)) {
            return 0;
        } else {
            this.mFile = v0_1;
            return 1;
        }
    }

Method android.support.v4.provider.RawDocumentFile.createFile() calling method java.io.File.<init>()


    public android.support.v4.provider.DocumentFile createFile(String p3, String p4)
    {
        int v3_5 = android.webkit.MimeTypeMap.getSingleton().getExtensionFromMimeType(p3);
        if (v3_5 != 0) {
            StringBuilder v0_5 = new StringBuilder();
            v0_5.append(p4);
            v0_5.append(".");
            v0_5.append(v3_5);
            p4 = v0_5.toString();
        }
        int v3_2 = new java.io.File(this.mFile, p4);
        try {
            v3_2.createNewFile();
            return new android.support.v4.provider.RawDocumentFile(this, v3_2);
        } catch (int v3_3) {
            StringBuilder v0_3 = new StringBuilder();
            v0_3.append("Failed to createFile: ");
            v0_3.append(v3_3);
            android.util.Log.w("DocumentFile", v0_3.toString());
            return 0;
        }
    }

Method android.support.v4.provider.RawDocumentFile.createDirectory() calling method java.io.File.<init>()


    public android.support.v4.provider.DocumentFile createDirectory(String p3)
    {
        java.io.File v0_1 = new java.io.File(this.mFile, p3);
        if ((!v0_1.isDirectory()) && (!v0_1.mkdir())) {
            return 0;
        } else {
            return new android.support.v4.provider.RawDocumentFile(this, v0_1);
        }
    }

Method android.support.v4.graphics.TypefaceCompatApi21Impl.getFile() calling method java.io.File.<init>()


    private java.io.File getFile(android.os.ParcelFileDescriptor p4)
    {
        try {
            java.io.File v1_4 = new StringBuilder();
            v1_4.append("/proc/self/fd/");
            v1_4.append(p4.getFd());
            String v4_1 = android.system.Os.readlink(v1_4.toString());
        } catch (android.system.ErrnoException) {
            return 0;
        }
        if (!android.system.OsConstants.S_ISREG(android.system.Os.stat(v4_1).st_mode)) {
            return 0;
        } else {
            return new java.io.File(v4_1);
        }
    }

Method android.support.v4.content.FileProvider$SimplePathStrategy.getFileForUri() calling method java.io.File.<init>()


    public java.io.File getFileForUri(android.net.Uri p5)
    {
        String v0_0 = p5.getEncodedPath();
        String v2_4 = v0_0.indexOf(47, 1);
        String v3_1 = android.net.Uri.decode(v0_0.substring(1, v2_4));
        String vtmp6 = android.net.Uri.decode(v0_0.substring((v2_4 + 1)));
        StringBuilder v1_2 = ((java.io.File) this.mRoots.get(v3_1));
        if (v1_2 == null) {
            StringBuilder v1_5 = new StringBuilder();
            v1_5.append("Unable to find configured root for ");
            v1_5.append(p5);
            throw new IllegalArgumentException(v1_5.toString());
        } else {
            try {
                SecurityException v5_4 = new java.io.File(v1_2, vtmp6).getCanonicalFile();
            } catch (java.io.IOException) {
                StringBuilder v1_8 = new StringBuilder();
                v1_8.append("Failed to resolve canonical path for ");
                v1_8.append(v5_4);
                throw new IllegalArgumentException(v1_8.toString());
            }
            if (!v5_4.getPath().startsWith(v1_2.getPath())) {
                throw new SecurityException("Resolved path jumped beyond configured root");
            } else {
                return v5_4;
            }
        }
    }

Method okhttp3.internal.cache.DiskLruCache.<init>() calling method java.io.File.<init>()


    DiskLruCache(okhttp3.internal.io.FileSystem p7, java.io.File p8, int p9, int p10, long p11, java.util.concurrent.Executor p13)
    {
        this.size = 0;
        this.lruEntries = new java.util.LinkedHashMap(0, 1061158912, 1);
        this.nextSequenceNumber = 0;
        this.cleanupRunnable = new okhttp3.internal.cache.DiskLruCache$1(this);
        this.fileSystem = p7;
        this.directory = p8;
        this.appVersion = p9;
        this.journalFile = new java.io.File(p8, "journal");
        this.journalFileTmp = new java.io.File(p8, "journal.tmp");
        this.journalFileBackup = new java.io.File(p8, "journal.bkp");
        this.valueCount = p10;
        this.maxSize = p11;
        this.executor = p13;
        return;
    }

Method okhttp3.internal.cache.DiskLruCache$Entry.<init>() calling method java.io.File.<init>()


    DiskLruCache$Entry(okhttp3.internal.cache.DiskLruCache p7, String p8)
    {
        this.this$0 = p7;
        this.key = p8;
        StringBuilder v0_4 = new long[p7.valueCount];
        this.lengths = v0_4;
        StringBuilder v0_6 = new java.io.File[p7.valueCount];
        this.cleanFiles = v0_6;
        StringBuilder v0_0 = new java.io.File[p7.valueCount];
        this.dirtyFiles = v0_0;
        StringBuilder v0_2 = new StringBuilder(p8);
        v0_2.append(46);
        int v8_2 = v0_2.length();
        int v1 = 0;
        while (v1 < p7.valueCount) {
            v0_2.append(v1);
            this.cleanFiles[v1] = new java.io.File(p7.directory, v0_2.toString());
            v0_2.append(".tmp");
            this.dirtyFiles[v1] = new java.io.File(p7.directory, v0_2.toString());
            v0_2.setLength(v8_2);
            v1++;
        }
        return;
    }

Method android.support.v4.util.AtomicFile.<init>() calling method java.io.File.<init>()


    public AtomicFile(java.io.File p3)
    {
        this.mBaseName = p3;
        StringBuilder v1_1 = new StringBuilder();
        v1_1.append(p3.getPath());
        v1_1.append(".bak");
        this.mBackupName = new java.io.File(v1_1.toString());
        return;
    }

Method android.support.v4.graphics.TypefaceCompatUtil.getTempFile() calling method java.io.File.<init>()


    public static java.io.File getTempFile(android.content.Context p5)
    {
        String v0_1 = new StringBuilder();
        v0_1.append(".font");
        v0_1.append(android.os.Process.myPid());
        v0_1.append("-");
        v0_1.append(android.os.Process.myTid());
        v0_1.append("-");
        String v0_2 = v0_1.toString();
        int v1_2 = 0;
        while (v1_2 < 100) {
            boolean v3_0 = p5.getCacheDir();
            String v4_1 = new StringBuilder();
            v4_1.append(v0_2);
            v4_1.append(v1_2);
            java.io.File v2_2 = new java.io.File(v3_0, v4_1.toString());
            try {
                if (!v2_2.createNewFile()) {
                    v1_2++;
                } else {
                    return v2_2;
                }
            } catch (java.io.IOException) {
            }
        }
        return 0;
    }

Method android.support.v4.content.FileProvider.buildPath() calling method java.io.File.<init>()


    private static varargs java.io.File buildPath(java.io.File p4, String[] p5)
    {
        int v1 = 0;
        while (v1 < p5.length) {
            String v2 = p5[v1];
            if (v2 != null) {
                p4 = new java.io.File(p4, v2);
            }
            v1++;
        }
        return p4;
    }

Method android.support.v4.content.FileProvider.<clinit>() calling method java.io.File.<init>()


    static FileProvider()
    {
        java.util.HashMap v0_1 = new String[2];
        v0_1[0] = "_display_name";
        v0_1[1] = "_size";
        android.support.v4.content.FileProvider.COLUMNS = v0_1;
        android.support.v4.content.FileProvider.DEVICE_ROOT = new java.io.File("/");
        android.support.v4.content.FileProvider.sCache = new java.util.HashMap();
        return;
    }

Method android.support.v4.content.ContextCompat.getNoBackupFilesDir() calling method java.io.File.<init>()


    public static java.io.File getNoBackupFilesDir(android.content.Context p2)
    {
        if (android.os.Build$VERSION.SDK_INT < 21) {
            return android.support.v4.content.ContextCompat.createFilesDir(new java.io.File(p2.getApplicationInfo().dataDir, "no_backup"));
        } else {
            return p2.getNoBackupFilesDir();
        }
    }

Method android.support.v4.content.ContextCompat.getDataDir() calling method java.io.File.<init>()


    public static java.io.File getDataDir(android.content.Context p2)
    {
        if (android.os.Build$VERSION.SDK_INT < 24) {
            int v0_1;
            String v2_3 = p2.getApplicationInfo().dataDir;
            if (v2_3 == null) {
                v0_1 = 0;
            } else {
                v0_1 = new java.io.File(v2_3);
            }
            return v0_1;
        } else {
            return p2.getDataDir();
        }
    }

Method android.support.v4.content.ContextCompat.getCodeCacheDir() calling method java.io.File.<init>()


    public static java.io.File getCodeCacheDir(android.content.Context p2)
    {
        if (android.os.Build$VERSION.SDK_INT < 21) {
            return android.support.v4.content.ContextCompat.createFilesDir(new java.io.File(p2.getApplicationInfo().dataDir, "code_cache"));
        } else {
            return p2.getCodeCacheDir();
        }
    }

Method android.support.v4.content.ContextCompat.buildPath() calling method java.io.File.<init>()


    private static varargs java.io.File buildPath(java.io.File p4, String[] p5)
    {
        int v0 = p5.length;
        int v1 = 0;
        while (v1 < v0) {
            String v2 = p5[v1];
            if (p4 != null) {
                if (v2 != null) {
                    p4 = new java.io.File(p4, v2);
                }
            } else {
                p4 = new java.io.File(v2);
            }
            v1++;
        }
        return p4;
    }

Method okhttp3.internal.cache2.Relay.read() calling method java.io.RandomAccessFile.<init>()


    public static okhttp3.internal.cache2.Relay read(java.io.File p10)
    {
        java.io.RandomAccessFile v1_1 = new java.io.RandomAccessFile(p10, "rw");
        java.io.IOException v10_5 = new okhttp3.internal.cache2.FileOperator(v1_1.getChannel());
        String v0_7 = new okio.Buffer();
        v10_5.read(0, v0_7, 32);
        if (!v0_7.readByteString(((long) okhttp3.internal.cache2.Relay.PREFIX_CLEAN.size())).equals(okhttp3.internal.cache2.Relay.PREFIX_CLEAN)) {
            throw new java.io.IOException("unreadable cache file");
        } else {
            long v8 = v0_7.readLong();
            long v6_1 = v0_7.readLong();
            String v0_3 = new okio.Buffer();
            v10_5.read((v8 + 32), v0_3, v6_1);
            java.io.IOException v10_4 = new okhttp3.internal.cache2.Relay;
            v10_4(v1_1, 0, v8, v0_3.readByteString(), 0);
            return v10_4;
        }
    }

Method okhttp3.internal.cache2.Relay.edit() calling method java.io.RandomAccessFile.<init>()


    public static okhttp3.internal.cache2.Relay edit(java.io.File p9, okio.Source p10, okio.ByteString p11, long p12)
    {
        java.io.RandomAccessFile v8_1 = new java.io.RandomAccessFile(p9, "rw");
        okhttp3.internal.cache2.Relay v9_1 = new okhttp3.internal.cache2.Relay;
        v9_1(v8_1, p10, 0, p11, p12);
        v8_1.setLength(0);
        v9_1.writeHeader(okhttp3.internal.cache2.Relay.PREFIX_DIRTY, -1, -1);
        return v9_1;
    }

Method android.support.v7.widget.ActivityChooserModel$PersistHistoryAsyncTask.doInBackground() calling method android.content.Context.openFileOutput()

Couldn't retrieve source code