[Android] Add a setting to persist incognito mode after the app restarts

Nicolas Pomepuy git at videolan.org
Tue Apr 1 13:28:04 UTC 2025


vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Tue Apr  1 08:46:08 2025 +0200| [85ad793bed8a0c3f8567883bf73a724220a29910] | committer: Duncan McNamara

Add a setting to persist incognito mode after the app restarts

Fixes #3191

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

 .../main/java/org/videolan/mobile/app/AppSetupDelegate.kt  | 14 +++++++++++---
 application/resources/src/main/res/values/strings.xml      |  2 ++
 .../tools/src/main/java/org/videolan/tools/Settings.kt     |  1 +
 application/vlc-android/res/xml/preferences_ui.xml         |  7 +++++++
 4 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/application/app/src/main/java/org/videolan/mobile/app/AppSetupDelegate.kt b/application/app/src/main/java/org/videolan/mobile/app/AppSetupDelegate.kt
index 70f399e6b2..fce3723c56 100644
--- a/application/app/src/main/java/org/videolan/mobile/app/AppSetupDelegate.kt
+++ b/application/app/src/main/java/org/videolan/mobile/app/AppSetupDelegate.kt
@@ -48,7 +48,10 @@ import org.videolan.resources.VLCInstance
 import org.videolan.resources.util.startRemoteAccess
 import org.videolan.tools.AppScope
 import org.videolan.tools.KEY_ENABLE_REMOTE_ACCESS
+import org.videolan.tools.KEY_INCOGNITO
+import org.videolan.tools.KEY_PERSISTENT_INCOGNITO
 import org.videolan.tools.Settings
+import org.videolan.tools.putSingle
 import org.videolan.vlc.BuildConfig
 import org.videolan.vlc.gui.helpers.NotificationHelper
 import org.videolan.vlc.util.DialogDelegate
@@ -78,8 +81,8 @@ class AppSetupDelegate : AppDelegate,
         FactoryManager.registerFactory(ILibVLCFactory.factoryId, LibVLCFactory())
         System.setProperty(DEBUG_PROPERTY_NAME, DEBUG_PROPERTY_VALUE_ON)
 
+        val settings = Settings.getInstance(this)
         if (BuildConfig.DEBUG) {
-            Settings.getInstance(this)
             if (Settings.showTvUi) {
                 // Register movipedia to resume tv shows/movies
                 setupContentResolvers()
@@ -88,11 +91,16 @@ class AppSetupDelegate : AppDelegate,
                 setupIndexers()
             }
         }
-        AppContextProvider.setLocale(Settings.getInstance(this).getString("set_locale", ""))
+        //App restarted, leave the incognito mode
+        if (!settings.getBoolean(KEY_PERSISTENT_INCOGNITO, true))
+            settings.putSingle(KEY_INCOGNITO, false)
+
+
+        AppContextProvider.setLocale(settings.getString("set_locale", ""))
 
         //Initiate Kotlinx Dispatchers in a thread to prevent ANR
         backgroundInit()
-        if (Settings.getInstance(this).getBoolean(KEY_ENABLE_REMOTE_ACCESS, false))
+        if (settings.getBoolean(KEY_ENABLE_REMOTE_ACCESS, false))
             startRemoteAccess()
 
         registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks {
diff --git a/application/resources/src/main/res/values/strings.xml b/application/resources/src/main/res/values/strings.xml
index 09d1b0ddb3..bedd1553c0 100644
--- a/application/resources/src/main/res/values/strings.xml
+++ b/application/resources/src/main/res/values/strings.xml
@@ -921,6 +921,8 @@
     <string name="validation_delete_playlist_text">This action cannot be undone.</string>
     <string name="display_settings">Display settings</string>
     <string name="incognito_mode">Incognito mode</string>
+    <string name="persistent_incognito_mode">Persistent incognito mode</string>
+    <string name="persistent_incognito_mode_summary">Keep the incognito mode enabled even if the app is restarted</string>
     <string name="display_in_list">Display in list</string>
     <string name="display_in_grid">Display in grid</string>
     <string name="dump_db_succes">Database dumped on internal storage root</string>
diff --git a/application/tools/src/main/java/org/videolan/tools/Settings.kt b/application/tools/src/main/java/org/videolan/tools/Settings.kt
index 4e8bf37d70..3034c3f2f6 100644
--- a/application/tools/src/main/java/org/videolan/tools/Settings.kt
+++ b/application/tools/src/main/java/org/videolan/tools/Settings.kt
@@ -122,6 +122,7 @@ const val KEY_AUDIO_SHOW_TRACK_NUMBERS = "audio_show_track_numbers"
 const val KEY_AUDIO_SHOW_CHAPTER_BUTTONS = "audio_show_chapter_buttons"
 const val KEY_AUDIO_SHOW_BOOkMARK_BUTTONS = "audio_show_bookmark_buttons"
 const val KEY_AUDIO_SHOW_BOOKMARK_MARKERS = "audio_show_bookmark_markers"
+const val KEY_PERSISTENT_INCOGNITO = "persistent_incognito"
 
 
 // AudioPlayer
diff --git a/application/vlc-android/res/xml/preferences_ui.xml b/application/vlc-android/res/xml/preferences_ui.xml
index 3ed7fd0e84..c6f4baebd6 100644
--- a/application/vlc-android/res/xml/preferences_ui.xml
+++ b/application/vlc-android/res/xml/preferences_ui.xml
@@ -70,6 +70,13 @@
             android:key="default_sleep_timer"
             android:title="@string/sleep_title"/>
 
+    <CheckBoxPreference
+            app:singleLineTitle="false"
+            android:key="persistent_incognito"
+            android:defaultValue="true"
+            android:summary="@string/persistent_incognito_mode_summary"
+            android:title="@string/persistent_incognito_mode"/>
+
     <PreferenceCategory
             android:title="@string/video"
             android:key="ui_video_category">



More information about the Android mailing list