vcard: prevent NPE when vcard has an empty photo
Change-Id: If7d0206eef39a4d309ccaf9a37625feaad008c84
Tuleap: #1143
diff --git a/ring-android/app/src/main/java/cx/ring/adapters/ContactDetailsTask.java b/ring-android/app/src/main/java/cx/ring/adapters/ContactDetailsTask.java
index 392ec87..9e6d5f4 100644
--- a/ring-android/app/src/main/java/cx/ring/adapters/ContactDetailsTask.java
+++ b/ring-android/app/src/main/java/cx/ring/adapters/ContactDetailsTask.java
@@ -153,7 +153,15 @@
if (vcard != null && !vcard.getPhotos().isEmpty()) {
Photo tmp = vcard.getPhotos().get(0);
- externalBMP = CropImageUtils.cropImageToCircle(tmp.getData());
+ Bitmap croppedBitmap;
+ if (tmp != null && tmp.getData() != null) {
+ croppedBitmap = CropImageUtils.cropImageToCircle(tmp.getData());
+ } else {
+ croppedBitmap = decodeSampledBitmapFromResource(mContext.getResources(), R.drawable.ic_contact_picture, mViewWidth, mViewHeight);
+ }
+
+ externalBMP = croppedBitmap != null ? croppedBitmap : decodeSampledBitmapFromResource(mContext.getResources(), R.drawable.ic_contact_picture, mViewWidth, mViewHeight);
+
} else {
Bitmap photoBmp;
try {
diff --git a/ring-android/app/src/main/java/cx/ring/adapters/SmartListAdapter.java b/ring-android/app/src/main/java/cx/ring/adapters/SmartListAdapter.java
index 66804fd..2247cea 100644
--- a/ring-android/app/src/main/java/cx/ring/adapters/SmartListAdapter.java
+++ b/ring-android/app/src/main/java/cx/ring/adapters/SmartListAdapter.java
@@ -138,10 +138,14 @@
}
public class ViewHolder {
- @BindView(R.id.conv_participant) TextView convParticipants;
- @BindView(R.id.conv_last_item) TextView convStatus;
- @BindView(R.id.conv_last_time) TextView convTime;
- @BindView(R.id.photo) ImageView photo;
+ @BindView(R.id.conv_participant)
+ TextView convParticipants;
+ @BindView(R.id.conv_last_item)
+ TextView convStatus;
+ @BindView(R.id.conv_last_time)
+ TextView convTime;
+ @BindView(R.id.photo)
+ ImageView photo;
int position;
public Conversation conv;
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java
index f7de4e6..7f4ee62 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java
@@ -949,7 +949,12 @@
if (!vcard.getPhotos().isEmpty()) {
Photo tmp = vcard.getPhotos().get(0);
- contactBubbleView.setImageBitmap(CropImageUtils.cropImageToCircle(tmp.getData()));
+ if(tmp.getData() != null) {
+ contactBubbleView.setImageBitmap(CropImageUtils.cropImageToCircle(tmp.getData()));
+ }
+ else{
+ setDefaultPhoto();
+ }
} else {
setDefaultPhoto();
}
diff --git a/ring-android/app/src/main/java/cx/ring/utils/CropImageUtils.java b/ring-android/app/src/main/java/cx/ring/utils/CropImageUtils.java
index 98d2bc0..4fb8bc3 100644
--- a/ring-android/app/src/main/java/cx/ring/utils/CropImageUtils.java
+++ b/ring-android/app/src/main/java/cx/ring/utils/CropImageUtils.java
@@ -36,7 +36,11 @@
@Nullable
public static Bitmap cropImageToCircle(@NonNull byte[] bArray) {
Bitmap bitmap = BitmapFactory.decodeByteArray(bArray, 0, bArray.length);
- return cropImageToCircle(bitmap);
+ if (bitmap != null) {
+ return cropImageToCircle(bitmap);
+ }
+
+ return null;
}
@Nullable