From 3be7f94c1029728a8e236cfcde9c8bce68244095 Mon Sep 17 00:00:00 2001 From: Sascha Haeberling Date: Mon, 26 Aug 2013 14:40:03 -0700 Subject: Make parsing integers for details dialog more robust. Bug: 7141309 Change-Id: I031e2f062ea786acb94d41385c5913c47d719ccd --- src/com/android/camera/ui/DetailsDialog.java | 29 ++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) (limited to 'src/com/android/camera/ui/DetailsDialog.java') 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); -- cgit v1.2.3