summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Haeberling <haeberling@google.com>2013-08-26 14:40:03 -0700
committerSascha Häberling <haeberling@google.com>2013-08-26 21:42:05 +0000
commit3be7f94c1029728a8e236cfcde9c8bce68244095 (patch)
tree433fcebe6c553fc9b356deb32bcec16254d60ca2
parent80af7dd871547d03ee9ff5023cbec00b1d8677ee (diff)
downloadandroid_packages_apps_Snap-3be7f94c1029728a8e236cfcde9c8bce68244095.tar.gz
android_packages_apps_Snap-3be7f94c1029728a8e236cfcde9c8bce68244095.tar.bz2
android_packages_apps_Snap-3be7f94c1029728a8e236cfcde9c8bce68244095.zip
Make parsing integers for details dialog more robust.
Bug: 7141309 Change-Id: I031e2f062ea786acb94d41385c5913c47d719ccd
-rw-r--r--src/com/android/camera/ui/DetailsDialog.java29
1 files changed, 25 insertions, 4 deletions
diff --git a/src/com/android/camera/ui/DetailsDialog.java b/src/com/android/camera/ui/DetailsDialog.java
index bd4efea64..d61a03e90 100644
--- a/src/com/android/camera/ui/DetailsDialog.java
+++ b/src/com/android/camera/ui/DetailsDialog.java
@@ -135,18 +135,20 @@ public class DetailsDialog {
}
case MediaDetails.INDEX_WIDTH:
mWidthIndex = mItems.size();
- value = toLocalNumber((Integer) detail.getValue());
- if (value.equalsIgnoreCase("0")) {
+ if (detail.getValue().toString().equalsIgnoreCase("0")) {
value = context.getString(R.string.unknown);
resolutionIsValid = false;
+ } else {
+ value = toLocalInteger(detail.getValue());
}
break;
case MediaDetails.INDEX_HEIGHT: {
mHeightIndex = mItems.size();
- value = toLocalNumber((Integer) detail.getValue());
- if (value.equalsIgnoreCase("0")) {
+ if (detail.getValue().toString().equalsIgnoreCase("0")) {
value = context.getString(R.string.unknown);
resolutionIsValid = false;
+ } else {
+ value = toLocalInteger(detail.getValue());
}
break;
}
@@ -253,6 +255,25 @@ public class DetailsDialog {
notifyDataSetChanged();
}
+ /**
+ * Converts the given integer (given as String or Integer object) to a
+ * localized String version.
+ */
+ private String toLocalInteger(Object valueObj) {
+ if (valueObj instanceof Integer) {
+ return toLocalNumber((Integer) valueObj);
+ } else {
+ String value = valueObj.toString();
+ try {
+ value = toLocalNumber(Integer.parseInt(value));
+ } catch (NumberFormatException ex) {
+ // Just keep the current "value" if we cannot
+ // parse it as a fallback.
+ }
+ return value;
+ }
+ }
+
/** Converts the given integer to a localized String version. */
private String toLocalNumber(int n) {
return String.format(mDefaultLocale, "%d", n);