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