diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index 1a3be1d78a..35e0f14933 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -51,6 +51,7 @@ import android.text.format.DateUtils; import android.text.method.LinkMovementMethod; import android.text.style.ImageSpan; import android.text.style.URLSpan; +import android.util.Base64; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; @@ -790,7 +791,9 @@ public class AdapterMessage extends RecyclerView.Adapter 1); + boolean embedded = source.startsWith("cid:"); + boolean data = source.startsWith("data:"); + Log.i(Helper.TAG, "Image embedded=" + embedded + " data=" + data + " source=" + source); if (properties.showImages(message.id)) { // Embedded images @@ -813,6 +816,25 @@ public class AdapterMessage extends RecyclerView.Adapter"; + + String base64 = source.substring(source.indexOf(',') + 1); + byte[] bytes = Base64.decode(base64.getBytes(), 0); + + Bitmap bm = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); + if (bm == null) + throw new IllegalArgumentException("decode byte array failed"); + + Drawable d = new BitmapDrawable(context.getResources(), bm); + d.setBounds(0, 0, bm.getWidth(), bm.getHeight()); + return d; + } + // Get cache folder File dir = new File(context.getCacheDir(), "images"); if (!dir.exists()) @@ -836,7 +858,7 @@ public class AdapterMessage extends RecyclerView.Adapter");