summaryrefslogtreecommitdiff
path: root/Source/Android
diff options
context:
space:
mode:
authorBlakDulz <blakdulz@gmail.com>2023-12-23 20:42:00 +0700
committerBlakDulz <blakdulz@gmail.com>2023-12-23 23:26:54 +0700
commitd667fca8d32df385f7b7e2a9d19cdb00bb24fbe6 (patch)
tree54ab3850e98dd42cef97f26a5578d3c2d85a8ecc /Source/Android
parent57327be7f379757a192fa788f5875ed1a77970c4 (diff)
Implement Refresh on DocumentProvider
"When interacting with DocumentUI or the built-in Android System Internal Files Manager app and performing Create, Rename, and Delete operations, DocumentsUI will not automatically refresh the changes. Previously, users had to manually pull down from the top to refresh the changes. This commit aims to fix this issue by automatically notifying the system that changes have occurred and triggering a requery."
Diffstat (limited to 'Source/Android')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/DocumentProvider.kt17
1 files changed, 17 insertions, 0 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/DocumentProvider.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/DocumentProvider.kt
index b637962177..434b344417 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/DocumentProvider.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/DocumentProvider.kt
@@ -9,8 +9,10 @@
package org.dolphinemu.dolphinemu.features
import android.annotation.TargetApi
+import android.content.Context
import android.database.Cursor
import android.database.MatrixCursor
+import android.net.Uri
import android.os.Build
import android.os.CancellationSignal
import android.os.ParcelFileDescriptor
@@ -93,6 +95,8 @@ class DocumentProvider : DocumentsProvider() {
appendDocument(file, result)
}
}
+ result.setNotificationUri(context!!.contentResolver, DocumentsContract.buildChildDocumentsUri(
+ "${context!!.packageName}.user", parentDocumentId))
return result
}
@@ -121,6 +125,7 @@ class DocumentProvider : DocumentsProvider() {
} else {
file.createNewFile()
}
+ refreshDocument(parentDocumentId)
return pathToDocumentId(file)
}
@@ -128,7 +133,9 @@ class DocumentProvider : DocumentsProvider() {
rootDirectory ?: return
val file = documentIdToPath(documentId)
+ val fileParent = file.parentFile
file.deleteRecursively()
+ refreshDocument(pathToDocumentId(fileParent!!))
}
override fun renameDocument(documentId: String, displayName: String): String? {
@@ -137,9 +144,19 @@ class DocumentProvider : DocumentsProvider() {
val file = documentIdToPath(documentId)
val dest = findFileNameForNewFile(File(file.parentFile, displayName))
file.renameTo(dest)
+ refreshDocument(pathToDocumentId(file.parentFile!!))
return pathToDocumentId(dest)
}
+ private fun refreshDocument(parentDocumentId: String) {
+ val parentUri: Uri =
+ DocumentsContract.buildChildDocumentsUri(
+ "${context!!.packageName}.user",
+ parentDocumentId
+ )
+ context!!.contentResolver.notifyChange(parentUri, null)
+ }
+
override fun isChildDocument(parentDocumentId: String, documentId: String): Boolean
= documentId.startsWith(parentDocumentId)