ADD week 5
This commit is contained in:
		
							
								
								
									
										7
									
								
								02-Easy5/E5/sources/androidx/documentfile/R.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								02-Easy5/E5/sources/androidx/documentfile/R.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| package androidx.documentfile; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| public final class R { | ||||
|     private R() { | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,77 @@ | ||||
| package androidx.documentfile.provider; | ||||
|  | ||||
| import android.content.Context; | ||||
| import android.net.Uri; | ||||
| import android.provider.DocumentsContract; | ||||
| import java.io.File; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| public abstract class DocumentFile { | ||||
|     static final String TAG = "DocumentFile"; | ||||
|     private final DocumentFile mParent; | ||||
|  | ||||
|     public abstract boolean canRead(); | ||||
|  | ||||
|     public abstract boolean canWrite(); | ||||
|  | ||||
|     public abstract DocumentFile createDirectory(String str); | ||||
|  | ||||
|     public abstract DocumentFile createFile(String str, String str2); | ||||
|  | ||||
|     public abstract boolean delete(); | ||||
|  | ||||
|     public abstract boolean exists(); | ||||
|  | ||||
|     public abstract String getName(); | ||||
|  | ||||
|     public DocumentFile getParentFile() { | ||||
|         return this.mParent; | ||||
|     } | ||||
|  | ||||
|     public abstract String getType(); | ||||
|  | ||||
|     public abstract Uri getUri(); | ||||
|  | ||||
|     public abstract boolean isDirectory(); | ||||
|  | ||||
|     public abstract boolean isFile(); | ||||
|  | ||||
|     public abstract boolean isVirtual(); | ||||
|  | ||||
|     public abstract long lastModified(); | ||||
|  | ||||
|     public abstract long length(); | ||||
|  | ||||
|     public abstract DocumentFile[] listFiles(); | ||||
|  | ||||
|     public abstract boolean renameTo(String str); | ||||
|  | ||||
|     DocumentFile(DocumentFile documentFile) { | ||||
|         this.mParent = documentFile; | ||||
|     } | ||||
|  | ||||
|     public static DocumentFile fromFile(File file) { | ||||
|         return new RawDocumentFile(null, file); | ||||
|     } | ||||
|  | ||||
|     public static DocumentFile fromSingleUri(Context context, Uri uri) { | ||||
|         return new SingleDocumentFile(null, context, uri); | ||||
|     } | ||||
|  | ||||
|     public static DocumentFile fromTreeUri(Context context, Uri uri) { | ||||
|         return new TreeDocumentFile(null, context, DocumentsContract.buildDocumentUriUsingTree(uri, DocumentsContract.getTreeDocumentId(uri))); | ||||
|     } | ||||
|  | ||||
|     public static boolean isDocumentUri(Context context, Uri uri) { | ||||
|         return DocumentsContract.isDocumentUri(context, uri); | ||||
|     } | ||||
|  | ||||
|     public DocumentFile findFile(String str) { | ||||
|         for (DocumentFile documentFile : listFiles()) { | ||||
|             if (str.equals(documentFile.getName())) { | ||||
|                 return documentFile; | ||||
|             } | ||||
|         } | ||||
|         return null; | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,137 @@ | ||||
| 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.text.TextUtils; | ||||
| import android.util.Log; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| class DocumentsContractApi19 { | ||||
|     private static final int FLAG_VIRTUAL_DOCUMENT = 512; | ||||
|     private static final String TAG = "DocumentFile"; | ||||
|  | ||||
|     public static boolean isVirtual(Context context, Uri uri) { | ||||
|         return DocumentsContract.isDocumentUri(context, uri) && (getFlags(context, uri) & 512) != 0; | ||||
|     } | ||||
|  | ||||
|     public static String getName(Context context, Uri uri) { | ||||
|         return queryForString(context, uri, "_display_name", null); | ||||
|     } | ||||
|  | ||||
|     private static String getRawType(Context context, Uri uri) { | ||||
|         return queryForString(context, uri, "mime_type", null); | ||||
|     } | ||||
|  | ||||
|     public static String getType(Context context, Uri uri) { | ||||
|         String rawType = getRawType(context, uri); | ||||
|         if ("vnd.android.document/directory".equals(rawType)) { | ||||
|             return null; | ||||
|         } | ||||
|         return rawType; | ||||
|     } | ||||
|  | ||||
|     public static long getFlags(Context context, Uri uri) { | ||||
|         return queryForLong(context, uri, "flags", 0L); | ||||
|     } | ||||
|  | ||||
|     public static boolean isDirectory(Context context, Uri uri) { | ||||
|         return "vnd.android.document/directory".equals(getRawType(context, uri)); | ||||
|     } | ||||
|  | ||||
|     public static boolean isFile(Context context, Uri uri) { | ||||
|         String rawType = getRawType(context, uri); | ||||
|         return ("vnd.android.document/directory".equals(rawType) || TextUtils.isEmpty(rawType)) ? false : true; | ||||
|     } | ||||
|  | ||||
|     public static long lastModified(Context context, Uri uri) { | ||||
|         return queryForLong(context, uri, "last_modified", 0L); | ||||
|     } | ||||
|  | ||||
|     public static long length(Context context, Uri uri) { | ||||
|         return queryForLong(context, uri, "_size", 0L); | ||||
|     } | ||||
|  | ||||
|     public static boolean canRead(Context context, Uri uri) { | ||||
|         return context.checkCallingOrSelfUriPermission(uri, 1) == 0 && !TextUtils.isEmpty(getRawType(context, uri)); | ||||
|     } | ||||
|  | ||||
|     public static boolean canWrite(Context context, Uri uri) { | ||||
|         if (context.checkCallingOrSelfUriPermission(uri, 2) != 0) { | ||||
|             return false; | ||||
|         } | ||||
|         String rawType = getRawType(context, uri); | ||||
|         int queryForInt = queryForInt(context, uri, "flags", 0); | ||||
|         if (TextUtils.isEmpty(rawType)) { | ||||
|             return false; | ||||
|         } | ||||
|         if ((queryForInt & 4) != 0) { | ||||
|             return true; | ||||
|         } | ||||
|         if (!"vnd.android.document/directory".equals(rawType) || (queryForInt & 8) == 0) { | ||||
|             return (TextUtils.isEmpty(rawType) || (queryForInt & 2) == 0) ? false : true; | ||||
|         } | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     public static boolean exists(Context context, Uri uri) { | ||||
|         Cursor cursor = null; | ||||
|         try { | ||||
|             cursor = context.getContentResolver().query(uri, new String[]{"document_id"}, null, null, null); | ||||
|             return cursor.getCount() > 0; | ||||
|         } catch (Exception e) { | ||||
|             Log.w(TAG, "Failed query: " + e); | ||||
|             return false; | ||||
|         } finally { | ||||
|             closeQuietly(cursor); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private static String queryForString(Context context, Uri uri, String str, String str2) { | ||||
|         ContentResolver contentResolver = context.getContentResolver(); | ||||
|         Cursor cursor = null; | ||||
|         try { | ||||
|             cursor = contentResolver.query(uri, new String[]{str}, null, null, null); | ||||
|             return (!cursor.moveToFirst() || cursor.isNull(0)) ? str2 : cursor.getString(0); | ||||
|         } catch (Exception e) { | ||||
|             Log.w(TAG, "Failed query: " + e); | ||||
|             return str2; | ||||
|         } finally { | ||||
|             closeQuietly(cursor); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private static int queryForInt(Context context, Uri uri, String str, int i) { | ||||
|         return (int) queryForLong(context, uri, str, i); | ||||
|     } | ||||
|  | ||||
|     private static long queryForLong(Context context, Uri uri, String str, long j) { | ||||
|         ContentResolver contentResolver = context.getContentResolver(); | ||||
|         Cursor cursor = null; | ||||
|         try { | ||||
|             cursor = contentResolver.query(uri, new String[]{str}, null, null, null); | ||||
|             return (!cursor.moveToFirst() || cursor.isNull(0)) ? j : cursor.getLong(0); | ||||
|         } catch (Exception e) { | ||||
|             Log.w(TAG, "Failed query: " + e); | ||||
|             return j; | ||||
|         } finally { | ||||
|             closeQuietly(cursor); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private static void closeQuietly(AutoCloseable autoCloseable) { | ||||
|         if (autoCloseable != null) { | ||||
|             try { | ||||
|                 autoCloseable.close(); | ||||
|             } catch (RuntimeException e) { | ||||
|                 throw e; | ||||
|             } catch (Exception unused) { | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private DocumentsContractApi19() { | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,155 @@ | ||||
| package androidx.documentfile.provider; | ||||
|  | ||||
| import android.net.Uri; | ||||
| import android.util.Log; | ||||
| import android.webkit.MimeTypeMap; | ||||
| import java.io.File; | ||||
| import java.io.IOException; | ||||
| import java.util.ArrayList; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| class RawDocumentFile extends DocumentFile { | ||||
|     private File mFile; | ||||
|  | ||||
|     @Override // androidx.documentfile.provider.DocumentFile | ||||
|     public boolean isVirtual() { | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     RawDocumentFile(DocumentFile documentFile, File file) { | ||||
|         super(documentFile); | ||||
|         this.mFile = file; | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.documentfile.provider.DocumentFile | ||||
|     public DocumentFile createFile(String str, String str2) { | ||||
|         String extensionFromMimeType = MimeTypeMap.getSingleton().getExtensionFromMimeType(str); | ||||
|         if (extensionFromMimeType != null) { | ||||
|             str2 = str2 + "." + extensionFromMimeType; | ||||
|         } | ||||
|         File file = new File(this.mFile, str2); | ||||
|         try { | ||||
|             file.createNewFile(); | ||||
|             return new RawDocumentFile(this, file); | ||||
|         } catch (IOException e) { | ||||
|             Log.w("DocumentFile", "Failed to createFile: " + e); | ||||
|             return null; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.documentfile.provider.DocumentFile | ||||
|     public DocumentFile createDirectory(String str) { | ||||
|         File file = new File(this.mFile, str); | ||||
|         if (file.isDirectory() || file.mkdir()) { | ||||
|             return new RawDocumentFile(this, file); | ||||
|         } | ||||
|         return null; | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.documentfile.provider.DocumentFile | ||||
|     public Uri getUri() { | ||||
|         return Uri.fromFile(this.mFile); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.documentfile.provider.DocumentFile | ||||
|     public String getName() { | ||||
|         return this.mFile.getName(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.documentfile.provider.DocumentFile | ||||
|     public String getType() { | ||||
|         if (this.mFile.isDirectory()) { | ||||
|             return null; | ||||
|         } | ||||
|         return getTypeForName(this.mFile.getName()); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.documentfile.provider.DocumentFile | ||||
|     public boolean isDirectory() { | ||||
|         return this.mFile.isDirectory(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.documentfile.provider.DocumentFile | ||||
|     public boolean isFile() { | ||||
|         return this.mFile.isFile(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.documentfile.provider.DocumentFile | ||||
|     public long lastModified() { | ||||
|         return this.mFile.lastModified(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.documentfile.provider.DocumentFile | ||||
|     public long length() { | ||||
|         return this.mFile.length(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.documentfile.provider.DocumentFile | ||||
|     public boolean canRead() { | ||||
|         return this.mFile.canRead(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.documentfile.provider.DocumentFile | ||||
|     public boolean canWrite() { | ||||
|         return this.mFile.canWrite(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.documentfile.provider.DocumentFile | ||||
|     public boolean delete() { | ||||
|         deleteContents(this.mFile); | ||||
|         return this.mFile.delete(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.documentfile.provider.DocumentFile | ||||
|     public boolean exists() { | ||||
|         return this.mFile.exists(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.documentfile.provider.DocumentFile | ||||
|     public DocumentFile[] listFiles() { | ||||
|         ArrayList arrayList = new ArrayList(); | ||||
|         File[] listFiles = this.mFile.listFiles(); | ||||
|         if (listFiles != null) { | ||||
|             for (File file : listFiles) { | ||||
|                 arrayList.add(new RawDocumentFile(this, file)); | ||||
|             } | ||||
|         } | ||||
|         return (DocumentFile[]) arrayList.toArray(new DocumentFile[arrayList.size()]); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.documentfile.provider.DocumentFile | ||||
|     public boolean renameTo(String str) { | ||||
|         File file = new File(this.mFile.getParentFile(), str); | ||||
|         if (!this.mFile.renameTo(file)) { | ||||
|             return false; | ||||
|         } | ||||
|         this.mFile = file; | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     private static String getTypeForName(String str) { | ||||
|         int lastIndexOf = str.lastIndexOf(46); | ||||
|         if (lastIndexOf < 0) { | ||||
|             return "application/octet-stream"; | ||||
|         } | ||||
|         String mimeTypeFromExtension = MimeTypeMap.getSingleton().getMimeTypeFromExtension(str.substring(lastIndexOf + 1).toLowerCase()); | ||||
|         return mimeTypeFromExtension != null ? mimeTypeFromExtension : "application/octet-stream"; | ||||
|     } | ||||
|  | ||||
|     private static boolean deleteContents(File file) { | ||||
|         File[] listFiles = file.listFiles(); | ||||
|         boolean z = true; | ||||
|         if (listFiles != null) { | ||||
|             for (File file2 : listFiles) { | ||||
|                 if (file2.isDirectory()) { | ||||
|                     z &= deleteContents(file2); | ||||
|                 } | ||||
|                 if (!file2.delete()) { | ||||
|                     Log.w("DocumentFile", "Failed to delete " + file2); | ||||
|                     z = false; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         return z; | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,101 @@ | ||||
| package androidx.documentfile.provider; | ||||
|  | ||||
| import android.content.Context; | ||||
| import android.net.Uri; | ||||
| import android.provider.DocumentsContract; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| class SingleDocumentFile extends DocumentFile { | ||||
|     private Context mContext; | ||||
|     private Uri mUri; | ||||
|  | ||||
|     @Override // androidx.documentfile.provider.DocumentFile | ||||
|     public Uri getUri() { | ||||
|         return this.mUri; | ||||
|     } | ||||
|  | ||||
|     SingleDocumentFile(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) { | ||||
|         throw new UnsupportedOperationException(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.documentfile.provider.DocumentFile | ||||
|     public DocumentFile createDirectory(String str) { | ||||
|         throw new UnsupportedOperationException(); | ||||
|     } | ||||
|  | ||||
|     @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() { | ||||
|         throw new UnsupportedOperationException(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.documentfile.provider.DocumentFile | ||||
|     public boolean renameTo(String str) { | ||||
|         throw new UnsupportedOperationException(); | ||||
|     } | ||||
| } | ||||
| @@ -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