diff options
| -rw-r--r-- | packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java index ac65b20aefc0..0a98032e26d8 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java @@ -1125,7 +1125,10 @@ final class SettingsState { } catch (FileNotFoundException fnfe) { final String message = "No fallback file found for: " + mStatePersistFile; Slog.wtf(LOG_TAG, message); - throw new IllegalStateException(message); + if (!isConfigSettingsKey(mKey)) { + // Allow partially deserialized config settings because they can be updated later + throw new IllegalStateException(message); + } } if (parseStateFromXmlStreamLocked(in)) { // Parsed state from fallback file. Restore original file with fallback file @@ -1137,7 +1140,10 @@ final class SettingsState { } else { final String message = "Failed parsing settings file: " + mStatePersistFile; Slog.wtf(LOG_TAG, message); - throw new IllegalStateException(message); + if (!isConfigSettingsKey(mKey)) { + // Allow partially deserialized config settings because they can be updated later + throw new IllegalStateException(message); + } } } |