Don't crash when showing contact with invalid photo.
Fixes http://b/2047492
diff --git a/src/com/android/contacts/ui/widget/ContactEditorView.java b/src/com/android/contacts/ui/widget/ContactEditorView.java
index ece906d..7925bb8 100644
--- a/src/com/android/contacts/ui/widget/ContactEditorView.java
+++ b/src/com/android/contacts/ui/widget/ContactEditorView.java
@@ -514,20 +514,27 @@
public void setValues(DataKind kind, ValuesDelta values, EntityDelta state) {
mEntry = values;
- if (values == null) {
- // Invalid photo, show default "add photo" placeholder
- mPhoto.setScaleType(ImageView.ScaleType.CENTER);
- mPhoto.setImageResource(R.drawable.ic_menu_add_picture);
- return;
+ if (values != null) {
+ // Try decoding photo if actual entry
+ final byte[] photoBytes = values.getAsByteArray(Photo.PHOTO);
+ if (photoBytes != null) {
+ final Bitmap photo = BitmapFactory.decodeByteArray(photoBytes, 0,
+ photoBytes.length);
+
+ mPhoto.setScaleType(ImageView.ScaleType.CENTER_CROP);
+ mPhoto.setImageBitmap(photo);
+ } else {
+ resetDefault();
+ }
+ } else {
+ resetDefault();
}
+ }
- // Try decoding photo if actual entry
- final byte[] photoBytes = values.getAsByteArray(Photo.PHOTO);
- final Bitmap photo = BitmapFactory
- .decodeByteArray(photoBytes, 0, photoBytes.length);
-
- mPhoto.setScaleType(ImageView.ScaleType.CENTER_CROP);
- mPhoto.setImageBitmap(photo);
+ protected void resetDefault() {
+ // Invalid photo, show default "add photo" placeholder
+ mPhoto.setScaleType(ImageView.ScaleType.CENTER);
+ mPhoto.setImageResource(R.drawable.ic_menu_add_picture);
}
public void setEditorListener(EditorListener listener) {