summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeith Mok <kmok@cyngn.com>2016-06-16 09:42:06 -0700
committerChippa-a <vusal1372@gmail.com>2019-10-25 15:55:25 +0300
commit0671bf583bc6bcfbd17ef8587f39c7ec22fa1c9a (patch)
tree20b05b968fa62f88161955875116a722b2e5942e
parent6bb5e3d4d533870e13884806999e36bf43f769b0 (diff)
downloadandroid_packages_apps_Snap-0671bf583bc6bcfbd17ef8587f39c7ec22fa1c9a.tar.gz
android_packages_apps_Snap-0671bf583bc6bcfbd17ef8587f39c7ec22fa1c9a.tar.bz2
android_packages_apps_Snap-0671bf583bc6bcfbd17ef8587f39c7ec22fa1c9a.zip
CameraNext: don't crash when pref is not boolean
In some situation, a portion of pref (enableRecordingLocation) is created without first calling upgradeGlobalPreference first. Leaving the pref without the version field and makes the application thinks that the pref is in old version. When it tries to do an upgrade on the pref later, it tries to getBoolean for that location field, but that location field is already in string format, making getBoolean throws an exception. The best is to call upgradeGlobalPreference and upgradeLocalPreference when the application starts. However it should be no harm just add a simple guard in getBoolean to avoid that sitation. FEIJ-1258 Change-Id: Ic73078556b1a198a58968806091f8b0afd1ad6cc
-rwxr-xr-xsrc/com/android/camera/CameraSettings.java12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/com/android/camera/CameraSettings.java b/src/com/android/camera/CameraSettings.java
index 5e5806d1f..db7d624f2 100755
--- a/src/com/android/camera/CameraSettings.java
+++ b/src/com/android/camera/CameraSettings.java
@@ -1471,10 +1471,14 @@ public class CameraSettings {
version = 2;
}
if (version == 2) {
- editor.putString(KEY_RECORD_LOCATION,
- pref.getBoolean(KEY_RECORD_LOCATION, false)
- ? RecordLocationPreference.VALUE_ON
- : RecordLocationPreference.VALUE_NONE);
+ try {
+ boolean value = pref.getBoolean(KEY_RECORD_LOCATION, false);
+ editor.putString(KEY_RECORD_LOCATION,
+ value ? RecordLocationPreference.VALUE_ON
+ : RecordLocationPreference.VALUE_NONE);
+ } catch (ClassCastException e) {
+ Log.e(TAG, "error convert record location", e);
+ }
version = 3;
}
if (version == 3) {