diff --git a/app/src/main/java/eu/faircode/email/ActivityView.java b/app/src/main/java/eu/faircode/email/ActivityView.java index 57037bbcd9..edcd0ffd31 100644 --- a/app/src/main/java/eu/faircode/email/ActivityView.java +++ b/app/src/main/java/eu/faircode/email/ActivityView.java @@ -1187,10 +1187,14 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB DB db = DB.getInstance(context); EntityMessage message = db.message().getMessage(id); - if (message == null) - throw new FileNotFoundException(); + if (message == null || !message.content) + return null; + + File file = message.getFile(context); + if (!file.exists()) + return null; - String html = Helper.readText(message.getFile(context)); + String html = Helper.readText(file); html = HtmlHelper.getHtmlEmbedded(context, id, html); html = HtmlHelper.removeTracking(context, html); @@ -1199,6 +1203,9 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB @Override protected void onExecuted(Bundle args, final String[] data) { + if (data == null) + return; + // https://developer.android.com/training/printing/html-docs.html printWebView = new WebView(ActivityView.this); WebSettings settings = printWebView.getSettings(); @@ -1299,22 +1306,26 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB if (encrypted == null) { EntityMessage message = db.message().getMessage(id); - String body = Helper.readText(message.getFile(context)); - - // https://tools.ietf.org/html/rfc4880#section-6.2 - int begin = body.indexOf(PGP_BEGIN_MESSAGE); - int end = body.indexOf(PGP_END_MESSAGE); - if (begin >= 0 && begin < end) { - String section = body.substring(begin, end + PGP_END_MESSAGE.length()); - String[] lines = section.split("
"); - List disarmored = new ArrayList<>(); - for (String line : lines) - if (!TextUtils.isEmpty(line) && !line.contains(": ")) - disarmored.add(line); - section = TextUtils.join("\n\r", disarmored); - - inline = true; - encrypted = new ByteArrayInputStream(section.getBytes()); + if (message != null && message.content) { + File file = message.getFile(context); + if (file.exists()) { + // https://tools.ietf.org/html/rfc4880#section-6.2 + String body = Helper.readText(file); + int begin = body.indexOf(PGP_BEGIN_MESSAGE); + int end = body.indexOf(PGP_END_MESSAGE); + if (begin >= 0 && begin < end) { + String section = body.substring(begin, end + PGP_END_MESSAGE.length()); + String[] lines = section.split("
"); + List disarmored = new ArrayList<>(); + for (String line : lines) + if (!TextUtils.isEmpty(line) && !line.contains(": ")) + disarmored.add(line); + section = TextUtils.join("\n\r", disarmored); + + inline = true; + encrypted = new ByteArrayInputStream(section.getBytes()); + } + } } } diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index 8f808c103a..011765dc5e 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -107,7 +107,6 @@ import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import java.io.File; -import java.io.FileNotFoundException; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.text.DateFormat; @@ -1468,11 +1467,15 @@ public class AdapterMessage extends RecyclerView.Adapter 0) from = ((InternetAddress) message.from[0]).getAddress(); - return new String[]{ - from, - message.subject, - HtmlHelper.getText(Helper.readText(message.getFile(context))) - }; + String html = HtmlHelper.getText(Helper.readText(file)); + + return new String[]{from, message.subject, html}; } @Override protected void onExecuted(Bundle args, String[] text) { + if (text == null) + return; + Intent share = new Intent(); share.setAction(Intent.ACTION_SEND); share.setType("text/plain"); @@ -2473,7 +2493,8 @@ public class AdapterMessage extends RecyclerView.Adapter