ADD week 5
This commit is contained in:
		| @@ -0,0 +1,162 @@ | ||||
| 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 java.util.ArrayList; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| class TreeDocumentFile extends DocumentFile { | ||||
|     private Context mContext; | ||||
|     private Uri mUri; | ||||
|  | ||||
|     @Override // androidx.documentfile.provider.DocumentFile | ||||
|     public Uri getUri() { | ||||
|         return this.mUri; | ||||
|     } | ||||
|  | ||||
|     TreeDocumentFile(DocumentFile documentFile, Context context, Uri uri) { | ||||
|         super(documentFile); | ||||
|         this.mContext = context; | ||||
|         this.mUri = uri; | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.documentfile.provider.DocumentFile | ||||
|     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; | ||||
|     } | ||||
|  | ||||
|     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 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 | ||||
|     public String getName() { | ||||
|         return DocumentsContractApi19.getName(this.mContext, this.mUri); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.documentfile.provider.DocumentFile | ||||
|     public String getType() { | ||||
|         return DocumentsContractApi19.getType(this.mContext, 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 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 | ||||
|     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 | ||||
|     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 { | ||||
|             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); | ||||
|             } | ||||
|             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; | ||||
|         } finally { | ||||
|             closeQuietly(cursor); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private static void closeQuietly(AutoCloseable autoCloseable) { | ||||
|         if (autoCloseable != null) { | ||||
|             try { | ||||
|                 autoCloseable.close(); | ||||
|             } catch (RuntimeException e) { | ||||
|                 throw e; | ||||
|             } catch (Exception unused) { | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @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; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user