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
