From 22601ca51798104111015ec7c920e2e2d55f9419 Mon Sep 17 00:00:00 2001 From: Philipp Crocoll Date: Mon, 12 Oct 2026 11:02:56 +0200 Subject: [PATCH] store SSIDs in JSON instead of with join-character --- .../settings/SSIDManagerActivity.cs | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/keepass2android-app/settings/SSIDManagerActivity.cs b/src/keepass2android-app/settings/SSIDManagerActivity.cs index 4b46a435e..a70309b0c 100644 --- a/src/keepass2android-app/settings/SSIDManagerActivity.cs +++ b/src/keepass2android-app/settings/SSIDManagerActivity.cs @@ -43,7 +43,8 @@ public class SSIDManagerActivity : AppCompatActivity SSIDAdapter adapter; const string PrefsName = "SSIDPrefs"; - const string KeySSIDs = "SSIDs"; + const string KeySSIDs = "SSIDs"; // legacy: '|'-separated + const string KeySSIDsJson = "SSIDsJson"; protected override void OnCreate(Bundle savedInstanceState) { @@ -96,6 +97,21 @@ void LoadSSIDs() public static List LoadSSIDS(Context context) { var prefs = context.GetSharedPreferences(PrefsName, FileCreationMode.Private); + var json = prefs.GetString(KeySSIDsJson, null); + if (json != null) + { + try + { + return System.Text.Json.JsonSerializer.Deserialize>(json) ?? new List(); + } + catch (System.Text.Json.JsonException) + { + return new List(); + } + } + + // legacy format (before SSIDs containing '|' were supported): '|'-separated list. + // Didn't work with SSIDs containing '|' var ssids = prefs.GetString(KeySSIDs, ""); if (!string.IsNullOrEmpty(ssids)) return ssids.Split('|').ToList(); @@ -112,7 +128,8 @@ public static void SaveSSIDs(List ssidList, Context context) { var prefs = context.GetSharedPreferences(PrefsName, FileCreationMode.Private); var prefsEditor = prefs.Edit(); - prefsEditor.PutString(KeySSIDs, string.Join("|", ssidList)); + prefsEditor.PutString(KeySSIDsJson, System.Text.Json.JsonSerializer.Serialize(ssidList)); + prefsEditor.Remove(KeySSIDs); // legacy key, superseded by KeySSIDsJson prefsEditor.Commit(); }