163 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			163 lines
		
	
	
		
			5.6 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 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;
 | |
|     }
 | |
| }
 |