mirror of
https://github.com/Julow/Unexpected-Keyboard.git
synced 2025-06-28 13:41:28 +02:00
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.
This commit is contained in:
parent
f1ce6abe5a
commit
ef34303c7e
@ -8,7 +8,7 @@
|
|||||||
</intent-filter>
|
</intent-filter>
|
||||||
<meta-data android:name="android.view.im" android:resource="@xml/method"/>
|
<meta-data android:name="android.view.im" android:resource="@xml/method"/>
|
||||||
</service>
|
</service>
|
||||||
<activity android:name="juloo.keyboard2.SettingsActivity" android:icon="@drawable/ic_launcher" android:label="@string/settings_activity_label" android:theme="@style/android:Theme.DeviceDefault" android:exported="true">
|
<activity android:name="juloo.keyboard2.SettingsActivity" android:icon="@drawable/ic_launcher" android:label="@string/settings_activity_label" android:theme="@style/android:Theme.DeviceDefault" android:exported="true" android:directBootAware="true">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN"/>
|
<action android:name="android.intent.action.MAIN"/>
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
@ -83,7 +83,9 @@ public class EmojiGridView extends GridView
|
|||||||
|
|
||||||
private void saveLastUsed()
|
private void saveLastUsed()
|
||||||
{
|
{
|
||||||
SharedPreferences.Editor edit = emojiSharedPreferences().edit();
|
SharedPreferences.Editor edit;
|
||||||
|
try { edit = emojiSharedPreferences().edit(); }
|
||||||
|
catch (Exception _e) { return; }
|
||||||
HashSet<String> set = new HashSet<String>();
|
HashSet<String> set = new HashSet<String>();
|
||||||
for (Emoji emoji : _lastUsed.keySet())
|
for (Emoji emoji : _lastUsed.keySet())
|
||||||
set.add(String.valueOf(_lastUsed.get(emoji)) + "-" + emoji.name());
|
set.add(String.valueOf(_lastUsed.get(emoji)) + "-" + emoji.name());
|
||||||
@ -93,15 +95,18 @@ public class EmojiGridView extends GridView
|
|||||||
|
|
||||||
private void loadLastUsed()
|
private void loadLastUsed()
|
||||||
{
|
{
|
||||||
SharedPreferences prefs = emojiSharedPreferences();
|
|
||||||
Set<String> lastUseSet = prefs.getStringSet(LAST_USE_PREF, null);
|
|
||||||
_lastUsed = new HashMap<Emoji, Integer>();
|
_lastUsed = new HashMap<Emoji, Integer>();
|
||||||
|
SharedPreferences prefs;
|
||||||
|
// Storage might not be available (eg. the device is locked), avoid
|
||||||
|
// crashing.
|
||||||
|
try { prefs = emojiSharedPreferences(); }
|
||||||
|
catch (Exception _e) { return; }
|
||||||
|
Set<String> lastUseSet = prefs.getStringSet(LAST_USE_PREF, null);
|
||||||
if (lastUseSet != null)
|
if (lastUseSet != null)
|
||||||
for (String emojiData : lastUseSet)
|
for (String emojiData : lastUseSet)
|
||||||
{
|
{
|
||||||
String[] data = emojiData.split("-", 2);
|
String[] data = emojiData.split("-", 2);
|
||||||
Emoji emoji;
|
Emoji emoji;
|
||||||
|
|
||||||
if (data.length != 2)
|
if (data.length != 2)
|
||||||
continue ;
|
continue ;
|
||||||
emoji = Emoji.getEmojiByName(data[1]);
|
emoji = Emoji.getEmojiByName(data[1]);
|
||||||
|
@ -14,9 +14,13 @@ public class SettingsActivity extends PreferenceActivity
|
|||||||
{
|
{
|
||||||
detectSystemTheme();
|
detectSystemTheme();
|
||||||
super.onCreate(savedInstanceState);
|
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);
|
addPreferencesFromResource(R.xml.settings);
|
||||||
PreferenceManager.getDefaultSharedPreferences(this)
|
prefs.registerOnSharedPreferenceChangeListener(this.new OnPreferencesChange());
|
||||||
.registerOnSharedPreferenceChangeListener(this.new OnPreferencesChange());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** The default theme is [Theme.DeviceDefault], which is dark. Detect if the
|
/** 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. */
|
/** See DirectBootAwarePreferences. */
|
||||||
class OnPreferencesChange implements SharedPreferences.OnSharedPreferenceChangeListener
|
class OnPreferencesChange implements SharedPreferences.OnSharedPreferenceChangeListener
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user