[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