[Android] Fix preference parsing when using app namespace for fields

Nicolas Pomepuy git at videolan.org
Tue Apr 8 11:46:30 UTC 2025


vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Tue Apr  8 13:38:45 2025 +0200| [fb8259328580d8946b5bff9d4e847d54759109cd] | committer: Nicolas Pomepuy

Fix preference parsing when using app namespace for fields

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

 .../videolan/vlc/gui/preferences/search/PreferenceParser.kt  | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/application/vlc-android/src/org/videolan/vlc/gui/preferences/search/PreferenceParser.kt b/application/vlc-android/src/org/videolan/vlc/gui/preferences/search/PreferenceParser.kt
index 7af30194a1..eea31e81d2 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/preferences/search/PreferenceParser.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/preferences/search/PreferenceParser.kt
@@ -231,6 +231,7 @@ object PreferenceParser {
         val parser = context.resources.getXml(id)
         var eventType = -1
         val namespace = "http://schemas.android.com/apk/res/android"
+        val appNamespace = "http://schemas.android.com/apk/res-auto"
         var firstPrefScreeFound = false
         val englishContext = ContextWrapper(context).wrap("en")
         while (eventType != XmlResourceParser.END_DOCUMENT) {
@@ -243,11 +244,16 @@ object PreferenceParser {
                     categoryEng = getValue(englishContext, parser, namespace, "title")
                 }
                 if (element != "PreferenceCategory" && element != "Preference") {
-                    val key = getValue(context, parser, namespace, "key")
-                    val title = getValue(context, parser, namespace, "title")
-                    val titleEng = getValue(englishContext, parser, namespace, "title")
+                    var key = getValue(context, parser, namespace, "key")
+                    if (key.isBlank()) key = getValue(context, parser, appNamespace, "key")
+                    var title = getValue(context, parser, namespace, "title")
+                    if (title.isBlank()) title = getValue(context, parser, appNamespace, "title")
+                    var titleEng = getValue(englishContext, parser, namespace, "title")
+                    if (titleEng.isBlank()) titleEng = getValue(englishContext, parser, appNamespace, "title")
                     var summary = getValue(context, parser, namespace, "summary")
+                    if (summary.isBlank()) summary = getValue(context, parser, appNamespace, "summary")
                     var summaryEng = getValue(englishContext, parser, namespace, "summary")
+                    if (summaryEng.isBlank()) summaryEng = getValue(englishContext, parser, appNamespace, "summary")
                     val defaultValue = getValue(context, parser, namespace, "defaultValue")
                     if (summary.contains("%s") && element == "ListPreference") {
                         //get the current value for the string substitution



More information about the Android mailing list