[Android] SubDownload: check futur file canWrite()

Duncan McNamara git at videolan.org
Tue Jan 28 07:20:41 UTC 2025


vlc-android | branch: master | Duncan McNamara <dcn.mcnamara at gmail.com> | Mon Jan 27 15:47:18 2025 +0100| [68ffc2f950f3c5f7c129b03048130e25f2f5eb6f] | committer: Nicolas Pomepuy

SubDownload: check futur file canWrite()

Because of all the different permission APIs, it is easier to create a
File where we want to extract the subtitle file, and check if we have
write permission.

> https://code.videolan.org/videolan/vlc-android/commit/68ffc2f950f3c5f7c129b03048130e25f2f5eb6f
---

 .../vlc-android/src/org/videolan/vlc/util/VLCDownloadManager.kt        | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/application/vlc-android/src/org/videolan/vlc/util/VLCDownloadManager.kt b/application/vlc-android/src/org/videolan/vlc/util/VLCDownloadManager.kt
index ef7b801c03..fc5598e5ed 100644
--- a/application/vlc-android/src/org/videolan/vlc/util/VLCDownloadManager.kt
+++ b/application/vlc-android/src/org/videolan/vlc/util/VLCDownloadManager.kt
@@ -109,7 +109,8 @@ object VLCDownloadManager: BroadcastReceiver(), DefaultLifecycleObserver {
         if (!this::defaultSubsDirectory.isInitialized) defaultSubsDirectory = "${context.applicationContext.getExternalFilesDir(null)!!.absolutePath}/subtitles"
         if (subtitleItem.mediaUri.scheme != "file") return defaultSubsDirectory
         val folder = subtitleItem.mediaUri.path.getParentFolder() ?: return context.getExternalFilesDir("subs")?.absolutePath
-        val canWrite = context.isStarted() && context.getExtWritePermission(folder.toUri())
+        val subFile = subtitleItem.mediaUri.path?.let { File(it) }
+        val canWrite = context.isStarted() && context.getExtWritePermission(folder.toUri()) && subFile?.canWrite() ?: false
         return if (canWrite) folder
         else (context.applicationContext.getExternalFilesDir(null))?.absolutePath ?: defaultSubsDirectory
     }



More information about the Android mailing list