Small mailto improvements

This commit is contained in:
M66B 2021-07-24 20:10:44 +02:00
parent b3045c0a9e
commit c3ecd8a598
1 changed files with 28 additions and 21 deletions

View File

@ -98,27 +98,31 @@ public class ActivityCompose extends ActivityBase implements FragmentManager.OnB
MailTo mailto = MailTo.parse(uri.toString()); MailTo mailto = MailTo.parse(uri.toString());
List<String> to = sanitize(new String[]{mailto.getTo()}); List<String> to = sanitize(new String[]{mailto.getTo()});
if (to.size() == 1) if (to.size() > 0)
args.putString("to", to.get(0)); args.putString("to", to.get(0));
List<String> cc = sanitize(new String[]{mailto.getCc()}); List<String> cc = sanitize(new String[]{mailto.getCc()});
if (cc.size() == 1) if (cc.size() > 0)
args.putString("cc", cc.get(0)); args.putString("cc", cc.get(0));
String subject = mailto.getSubject(); String subject = mailto.getSubject();
if (subject != null) if (!TextUtils.isEmpty(subject))
args.putString("subject", subject); args.putString("subject", subject);
Map<String, String> headers = mailto.getHeaders(); Map<String, String> headers = mailto.getHeaders();
if (headers != null) if (headers != null)
for (String key : headers.keySet()) for (String key : headers.keySet()) {
List<String> address = sanitize(new String[]{headers.get(key)});
if (address.size() == 0)
continue;
if ("bcc".equalsIgnoreCase(key)) if ("bcc".equalsIgnoreCase(key))
args.putString("bcc", headers.get(key)); args.putString("bcc", address.get(0));
else if ("in-reply-to".equalsIgnoreCase(key)) else if ("in-reply-to".equalsIgnoreCase(key))
args.putString("inreplyto", headers.get(key)); args.putString("inreplyto", address.get(0));
}
String body = mailto.getBody(); String body = mailto.getBody();
if (body != null) { if (!TextUtils.isEmpty(body)) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
for (String line : body.split("\\r?\\n")) for (String line : body.split("\\r?\\n"))
sb.append("<span>").append(Html.escapeHtml(line)).append("<span><br>"); sb.append("<span>").append(Html.escapeHtml(line)).append("<span><br>");
@ -127,9 +131,9 @@ public class ActivityCompose extends ActivityBase implements FragmentManager.OnB
} }
if (intent.hasExtra(Intent.EXTRA_SHORTCUT_ID)) { if (intent.hasExtra(Intent.EXTRA_SHORTCUT_ID)) {
String to = intent.getStringExtra(Intent.EXTRA_SHORTCUT_ID); List<String> to = sanitize(new String[]{intent.getStringExtra(Intent.EXTRA_SHORTCUT_ID)});
if (to != null) if (to.size() > 0)
args.putString("to", to); args.putString("to", to.get(0));
} }
if (intent.hasExtra(Intent.EXTRA_EMAIL)) { if (intent.hasExtra(Intent.EXTRA_EMAIL)) {
@ -152,27 +156,30 @@ public class ActivityCompose extends ActivityBase implements FragmentManager.OnB
if (intent.hasExtra(Intent.EXTRA_SUBJECT)) { if (intent.hasExtra(Intent.EXTRA_SUBJECT)) {
String subject = intent.getStringExtra(Intent.EXTRA_SUBJECT); String subject = intent.getStringExtra(Intent.EXTRA_SUBJECT);
if (subject != null) if (!TextUtils.isEmpty(subject))
args.putString("subject", subject); args.putString("subject", subject);
} }
if (intent.hasExtra(Intent.EXTRA_HTML_TEXT)) { String html = null;
String html = intent.getStringExtra(Intent.EXTRA_HTML_TEXT);
if (!TextUtils.isEmpty(html)) if (intent.hasExtra(Intent.EXTRA_HTML_TEXT))
args.putString("body", html); html = intent.getStringExtra(Intent.EXTRA_HTML_TEXT);
} else if (intent.hasExtra(Intent.EXTRA_TEXT)) {
if (TextUtils.isEmpty(html) &&
intent.hasExtra(Intent.EXTRA_TEXT)) {
CharSequence body = intent.getCharSequenceExtra(Intent.EXTRA_TEXT); CharSequence body = intent.getCharSequenceExtra(Intent.EXTRA_TEXT);
if (body != null) if (body != null)
if (body instanceof Spanned) if (body instanceof Spanned)
args.putString("body", HtmlHelper.toHtml((Spanned) body, this)); html = HtmlHelper.toHtml((Spanned) body, this);
else { else {
String text = body.toString(); String text = body.toString();
if (!TextUtils.isEmpty(text)) { if (!TextUtils.isEmpty(text))
String html = "<span>" + text.replaceAll("\\r?\\n", "<br>") + "</span>"; html = "<span>" + text.replaceAll("\\r?\\n", "<br>") + "</span>";
}
}
if (!TextUtils.isEmpty(html))
args.putString("body", html); args.putString("body", html);
}
}
}
if (intent.hasExtra(Intent.EXTRA_STREAM)) if (intent.hasExtra(Intent.EXTRA_STREAM))
if (Intent.ACTION_SEND_MULTIPLE.equals(action)) { if (Intent.ACTION_SEND_MULTIPLE.equals(action)) {