[Android] Fix a ClassCastException crash for the remote_access_medialibrary_content setting

Nicolas Pomepuy git at videolan.org
Thu Oct 2 09:47:18 UTC 2025


vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Mon Sep 15 09:02:29 2025 +0200| [8d926b07373298ada931b115dd3ab799915e0785] | committer: Nicolas Pomepuy

Fix a ClassCastException crash for the remote_access_medialibrary_content setting

> https://code.videolan.org/videolan/vlc-android/commit/8d926b07373298ada931b115dd3ab799915e0785
---

 .../src/org/videolan/vlc/util/VersionMigration.kt  | 34 ++++++++++++++++++++--
 1 file changed, 32 insertions(+), 2 deletions(-)

diff --git a/application/vlc-android/src/org/videolan/vlc/util/VersionMigration.kt b/application/vlc-android/src/org/videolan/vlc/util/VersionMigration.kt
index a97d7a6103..fa05c86dbb 100644
--- a/application/vlc-android/src/org/videolan/vlc/util/VersionMigration.kt
+++ b/application/vlc-android/src/org/videolan/vlc/util/VersionMigration.kt
@@ -41,8 +41,8 @@ import org.videolan.resources.util.getFromMl
 import org.videolan.tools.KEY_APP_THEME
 import org.videolan.tools.KEY_CURRENT_EQUALIZER_ID
 import org.videolan.tools.KEY_CURRENT_MAJOR_VERSION
-import org.videolan.tools.KEY_CURRENT_SETTINGS_VERSION_AFTER_LIBVLC_INSTANTIATION
 import org.videolan.tools.KEY_CURRENT_SETTINGS_VERSION
+import org.videolan.tools.KEY_CURRENT_SETTINGS_VERSION_AFTER_LIBVLC_INSTANTIATION
 import org.videolan.tools.KEY_PLAYBACK_SPEED_AUDIO_GLOBAL
 import org.videolan.tools.KEY_PLAYBACK_SPEED_AUDIO_GLOBAL_VALUE
 import org.videolan.tools.KEY_PLAYBACK_SPEED_VIDEO_GLOBAL
@@ -70,7 +70,7 @@ import org.videolan.vlc.repository.EqualizerRepository
 import java.io.File
 import java.io.IOException
 
-private const val CURRENT_VERSION = 16
+private const val CURRENT_VERSION = 17
 private const val CURRENT_VERSION_LIBVLC = 1
 
 object VersionMigration {
@@ -152,6 +152,10 @@ object VersionMigration {
             migrateToVersion16(settings)
         }
 
+        if (lastVersion < 17) {
+            migrateToVersion17(settings)
+        }
+
         //Major version upgrade
         if (lastMajorVersion == 3 && currentMajorVersion == 4) {
             migrateToVlc4(settings)
@@ -469,6 +473,32 @@ object VersionMigration {
         }
     }
 
+    /**
+     * Migrate the wrongly typed remote_access_medialibrary_content setting
+     *
+     */
+    private fun migrateToVersion17(settings: SharedPreferences) {
+        Log.i(this::class.java.simpleName, "Migrate to version 17: Migrate the wrongly typed remote_access_medialibrary_content setting")
+        if (settings.contains("remote_access_medialibrary_content")) {
+            try {
+                settings.getString("remote_access_medialibrary_content", "")?.let {  oldValue ->
+                    settings.edit(true) {
+                        putStringSet(
+                            "remote_access_medialibrary_content",
+                            oldValue
+                                .split(",")
+                                .map { it.filter(Char::isDigit) }
+                                .toSet()
+                        )
+                    }
+                }
+
+            } catch (_: ClassCastException) {
+                //Not a string. Safe to keep
+            }
+        }
+    }
+
     /**
      * Migrate the equalizer to room
      */



More information about the Android mailing list