diff options
author | 2014-03-18 07:26:18 +0000 | |
---|---|---|
committer | 2014-03-18 07:26:18 +0000 | |
commit | 1325ddbae318d75b62f59beb09b989291838be48 (patch) | |
tree | ba57235595eef56bb8b0b2de08f786f6ee0cbd9f /java/src/com/android/inputmethod/latin/settings/Settings.java | |
parent | 6bdb2e60dc33cb9ba9c4d48e6fa2fbef14c4ec90 (diff) | |
parent | d2c6151d4d78e5e7d09080efd14e0a8f5933afb9 (diff) | |
download | latinime-1325ddbae318d75b62f59beb09b989291838be48.tar.gz latinime-1325ddbae318d75b62f59beb09b989291838be48.tar.xz latinime-1325ddbae318d75b62f59beb09b989291838be48.zip |
Merge "Guard possible NumberFormatException"
Diffstat (limited to 'java/src/com/android/inputmethod/latin/settings/Settings.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/settings/Settings.java | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/java/src/com/android/inputmethod/latin/settings/Settings.java b/java/src/com/android/inputmethod/latin/settings/Settings.java index b51c765f0..964bf2246 100644 --- a/java/src/com/android/inputmethod/latin/settings/Settings.java +++ b/java/src/com/android/inputmethod/latin/settings/Settings.java @@ -23,6 +23,7 @@ import android.content.res.Resources; import android.preference.PreferenceManager; import android.util.Log; +import com.android.inputmethod.keyboard.KeyboardSwitcher; import com.android.inputmethod.latin.AudioAndHapticFeedbackManager; import com.android.inputmethod.latin.InputAttributes; import com.android.inputmethod.latin.R; @@ -270,25 +271,36 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang } public static int readKeyboardThemeIndex(final SharedPreferences prefs, final Resources res) { - final String defaultThemeIndex = res.getString( - R.string.config_default_keyboard_theme_index); - final String themeIndex = prefs.getString(PREF_KEYBOARD_LAYOUT, defaultThemeIndex); + final int defaultThemeIndex = readDefaultKeyboardThemeIndex(res); + final String themeIndexString = prefs.getString(PREF_KEYBOARD_LAYOUT, null); try { - return Integer.valueOf(themeIndex); + return Integer.parseInt(themeIndexString); } catch (final NumberFormatException e) { // Format error, returns default keyboard theme index. - Log.e(TAG, "Illegal keyboard theme in preference: " + themeIndex + ", default to " + Log.e(TAG, "Illegal keyboard theme in preference: " + themeIndexString + ", default to " + defaultThemeIndex, e); - return Integer.valueOf(defaultThemeIndex); + } + return defaultThemeIndex; + } + + private static int readDefaultKeyboardThemeIndex(final Resources res) { + final String defaultThemeIndexString = res.getString( + R.string.config_default_keyboard_theme_index); + try { + return Integer.parseInt(defaultThemeIndexString); + } catch (final NumberFormatException e) { + final int defaultThemeIndex = KeyboardSwitcher.DEFAULT_THEME_INDEX; + Log.e(TAG, "Corrupted default keyoard theme in resource: " + defaultThemeIndexString + + ", default to " + defaultThemeIndex, e); + return defaultThemeIndex; } } public static int resetAndGetDefaultKeyboardThemeIndex(final SharedPreferences prefs, final Resources res) { - final String defaultThemeIndex = res.getString( - R.string.config_default_keyboard_theme_index); - prefs.edit().putString(PREF_KEYBOARD_LAYOUT, defaultThemeIndex).apply(); - return Integer.valueOf(defaultThemeIndex); + final int defaultThemeIndex = readDefaultKeyboardThemeIndex(res); + prefs.edit().putString(PREF_KEYBOARD_LAYOUT, Integer.toString(defaultThemeIndex)).apply(); + return defaultThemeIndex; } public static String readPrefAdditionalSubtypes(final SharedPreferences prefs, |