discord-jadx/app/src/main/java/androidx/documentfile/provider/TreeDocumentFile.java

169 lines
5.7 KiB
Java

package androidx.documentfile.provider;
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.provider.DocumentsContract;
import android.util.Log;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import java.util.ArrayList;
@RequiresApi(21)
public class TreeDocumentFile extends DocumentFile {
private Context mContext;
private Uri mUri;
public TreeDocumentFile(@Nullable DocumentFile documentFile, Context context, Uri uri) {
super(documentFile);
this.mContext = context;
this.mUri = uri;
}
private static void closeQuietly(@Nullable AutoCloseable autoCloseable) {
if (autoCloseable != null) {
try {
autoCloseable.close();
} catch (RuntimeException e) {
throw e;
} catch (Exception unused) {
}
}
}
@Nullable
private static Uri createFile(Context context, Uri uri, String str, String str2) {
try {
return DocumentsContract.createDocument(context.getContentResolver(), uri, str, str2);
} catch (Exception unused) {
return null;
}
}
@Override // androidx.documentfile.provider.DocumentFile
public boolean canRead() {
return DocumentsContractApi19.canRead(this.mContext, this.mUri);
}
@Override // androidx.documentfile.provider.DocumentFile
public boolean canWrite() {
return DocumentsContractApi19.canWrite(this.mContext, this.mUri);
}
@Override // androidx.documentfile.provider.DocumentFile
@Nullable
public DocumentFile createDirectory(String str) {
Uri createFile = createFile(this.mContext, this.mUri, "vnd.android.document/directory", str);
if (createFile != null) {
return new TreeDocumentFile(this, this.mContext, createFile);
}
return null;
}
@Override // androidx.documentfile.provider.DocumentFile
@Nullable
public DocumentFile createFile(String str, String str2) {
Uri createFile = createFile(this.mContext, this.mUri, str, str2);
if (createFile != null) {
return new TreeDocumentFile(this, this.mContext, createFile);
}
return null;
}
@Override // androidx.documentfile.provider.DocumentFile
public boolean delete() {
try {
return DocumentsContract.deleteDocument(this.mContext.getContentResolver(), this.mUri);
} catch (Exception unused) {
return false;
}
}
@Override // androidx.documentfile.provider.DocumentFile
public boolean exists() {
return DocumentsContractApi19.exists(this.mContext, this.mUri);
}
@Override // androidx.documentfile.provider.DocumentFile
@Nullable
public String getName() {
return DocumentsContractApi19.getName(this.mContext, this.mUri);
}
@Override // androidx.documentfile.provider.DocumentFile
@Nullable
public String getType() {
return DocumentsContractApi19.getType(this.mContext, this.mUri);
}
@Override // androidx.documentfile.provider.DocumentFile
public Uri getUri() {
return this.mUri;
}
@Override // androidx.documentfile.provider.DocumentFile
public boolean isDirectory() {
return DocumentsContractApi19.isDirectory(this.mContext, this.mUri);
}
@Override // androidx.documentfile.provider.DocumentFile
public boolean isFile() {
return DocumentsContractApi19.isFile(this.mContext, this.mUri);
}
@Override // androidx.documentfile.provider.DocumentFile
public boolean isVirtual() {
return DocumentsContractApi19.isVirtual(this.mContext, this.mUri);
}
@Override // androidx.documentfile.provider.DocumentFile
public long lastModified() {
return DocumentsContractApi19.lastModified(this.mContext, this.mUri);
}
@Override // androidx.documentfile.provider.DocumentFile
public long length() {
return DocumentsContractApi19.length(this.mContext, this.mUri);
}
@Override // androidx.documentfile.provider.DocumentFile
public DocumentFile[] listFiles() {
ContentResolver contentResolver = this.mContext.getContentResolver();
Uri uri = this.mUri;
Uri buildChildDocumentsUriUsingTree = DocumentsContract.buildChildDocumentsUriUsingTree(uri, DocumentsContract.getDocumentId(uri));
ArrayList arrayList = new ArrayList();
Cursor cursor = null;
try {
cursor = contentResolver.query(buildChildDocumentsUriUsingTree, new String[]{"document_id"}, null, null, null);
while (cursor.moveToNext()) {
arrayList.add(DocumentsContract.buildDocumentUriUsingTree(this.mUri, cursor.getString(0)));
}
} catch (Exception e) {
Log.w("DocumentFile", "Failed query: " + e);
} catch (Throwable th) {
closeQuietly(null);
throw th;
}
closeQuietly(cursor);
Uri[] uriArr = (Uri[]) arrayList.toArray(new Uri[arrayList.size()]);
DocumentFile[] documentFileArr = new DocumentFile[uriArr.length];
for (int i = 0; i < uriArr.length; i++) {
documentFileArr[i] = new TreeDocumentFile(this, this.mContext, uriArr[i]);
}
return documentFileArr;
}
@Override // androidx.documentfile.provider.DocumentFile
public boolean renameTo(String str) {
try {
Uri renameDocument = DocumentsContract.renameDocument(this.mContext.getContentResolver(), this.mUri, str);
if (renameDocument != null) {
this.mUri = renameDocument;
return true;
}
} catch (Exception unused) {
}
return false;
}
}