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/EmojiGridView.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'srcs/juloo.keyboard2/EmojiGridView.java') diff --git a/srcs/juloo.keyboard2/EmojiGridView.java b/srcs/juloo.keyboard2/EmojiGridView.java index 581200c..749ce3e 100644 --- a/srcs/juloo.keyboard2/EmojiGridView.java +++ b/srcs/juloo.keyboard2/EmojiGridView.java @@ -83,7 +83,9 @@ public class EmojiGridView extends GridView private void saveLastUsed() { - SharedPreferences.Editor edit = emojiSharedPreferences().edit(); + SharedPreferences.Editor edit; + try { edit = emojiSharedPreferences().edit(); } + catch (Exception _e) { return; } HashSet set = new HashSet(); for (Emoji emoji : _lastUsed.keySet()) set.add(String.valueOf(_lastUsed.get(emoji)) + "-" + emoji.name()); @@ -93,15 +95,18 @@ public class EmojiGridView extends GridView private void loadLastUsed() { - SharedPreferences prefs = emojiSharedPreferences(); - Set lastUseSet = prefs.getStringSet(LAST_USE_PREF, null); _lastUsed = new HashMap(); + SharedPreferences prefs; + // Storage might not be available (eg. the device is locked), avoid + // crashing. + try { prefs = emojiSharedPreferences(); } + catch (Exception _e) { return; } + Set lastUseSet = prefs.getStringSet(LAST_USE_PREF, null); if (lastUseSet != null) for (String emojiData : lastUseSet) { String[] data = emojiData.split("-", 2); Emoji emoji; - if (data.length != 2) continue ; emoji = Emoji.getEmojiByName(data[1]); -- cgit v1.2.3