From ef34303c7eaa781ed4655016538aac47f0aef002 Mon Sep 17 00:00:00 2001 From: Jules Aguillon Date: Fri, 11 Nov 2022 15:39:28 +0100 Subject: Avoid crashing in direct-boot mode The settings activity can't open in direct-boot mode. The emoji pane opens without the "last used" data. --- srcs/juloo.keyboard2/SettingsActivity.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'srcs/juloo.keyboard2/SettingsActivity.java') diff --git a/srcs/juloo.keyboard2/SettingsActivity.java b/srcs/juloo.keyboard2/SettingsActivity.java index c6454a7..04fe501 100644 --- a/srcs/juloo.keyboard2/SettingsActivity.java +++ b/srcs/juloo.keyboard2/SettingsActivity.java @@ -14,9 +14,13 @@ public class SettingsActivity extends PreferenceActivity { detectSystemTheme(); super.onCreate(savedInstanceState); + SharedPreferences prefs; + // The preferences can't be read when in direct-boot mode. Avoid crashing + // and don't allow changing the settings. + try { prefs = PreferenceManager.getDefaultSharedPreferences(this); } + catch (Exception _e) { fallbackEncrypted(); return; } addPreferencesFromResource(R.xml.settings); - PreferenceManager.getDefaultSharedPreferences(this) - .registerOnSharedPreferenceChangeListener(this.new OnPreferencesChange()); + prefs.registerOnSharedPreferenceChangeListener(this.new OnPreferencesChange()); } /** The default theme is [Theme.DeviceDefault], which is dark. Detect if the @@ -31,6 +35,12 @@ public class SettingsActivity extends PreferenceActivity } } + void fallbackEncrypted() + { + // Can't communicate with the user here. + finish(); + } + /** See DirectBootAwarePreferences. */ class OnPreferencesChange implements SharedPreferences.OnSharedPreferenceChangeListener { -- cgit v1.2.3