diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e24c4048..a58fb8ce 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -62,12 +62,22 @@
android:parentActivityName=".ActivityView">
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/java/eu/faircode/email/ActivityCompose.java b/app/src/main/java/eu/faircode/email/ActivityCompose.java
index 587b5f9a..5b8c0125 100644
--- a/app/src/main/java/eu/faircode/email/ActivityCompose.java
+++ b/app/src/main/java/eu/faircode/email/ActivityCompose.java
@@ -49,40 +49,45 @@ public class ActivityCompose extends ActivityBase implements FragmentManager.OnB
if (getSupportFragmentManager().getFragments().size() == 0) {
Bundle args;
- if (Intent.ACTION_SEND.equals(getIntent().getAction()) ||
- Intent.ACTION_SENDTO.equals(getIntent().getAction()) ||
- Intent.ACTION_SEND_MULTIPLE.equals(getIntent().getAction())) {
+ Intent intent = getIntent();
+ String action = intent.getAction();
+ if (Intent.ACTION_VIEW.equals(action) ||
+ Intent.ACTION_SENDTO.equals(action) ||
+ Intent.ACTION_SEND.equals(action) ||
+ Intent.ACTION_SEND_MULTIPLE.equals(action)) {
args = new Bundle();
-
args.putString("action", "new");
args.putLong("account", -1);
- if (getIntent().hasExtra(Intent.EXTRA_EMAIL))
- args.putString("to", TextUtils.join(", ", getIntent().getStringArrayExtra(Intent.EXTRA_EMAIL)));
+ Uri uri = intent.getData();
+ if (uri != null && "mailto".equals(uri.getScheme()))
+ args.putString("to", uri.getSchemeSpecificPart());
+
+ if (intent.hasExtra(Intent.EXTRA_EMAIL))
+ args.putString("to", TextUtils.join(", ", intent.getStringArrayExtra(Intent.EXTRA_EMAIL)));
- if (getIntent().hasExtra(Intent.EXTRA_CC))
- args.putString("cc", TextUtils.join(", ", getIntent().getStringArrayExtra(Intent.EXTRA_CC)));
+ if (intent.hasExtra(Intent.EXTRA_CC))
+ args.putString("cc", TextUtils.join(", ", intent.getStringArrayExtra(Intent.EXTRA_CC)));
- if (getIntent().hasExtra(Intent.EXTRA_BCC))
- args.putString("bcc", TextUtils.join(", ", getIntent().getStringArrayExtra(Intent.EXTRA_BCC)));
+ if (intent.hasExtra(Intent.EXTRA_BCC))
+ args.putString("bcc", TextUtils.join(", ", intent.getStringArrayExtra(Intent.EXTRA_BCC)));
- if (getIntent().hasExtra(Intent.EXTRA_SUBJECT))
- args.putString("subject", getIntent().getStringExtra(Intent.EXTRA_SUBJECT));
+ if (intent.hasExtra(Intent.EXTRA_SUBJECT))
+ args.putString("subject", intent.getStringExtra(Intent.EXTRA_SUBJECT));
- if (getIntent().hasExtra(Intent.EXTRA_TEXT))
- args.putString("body", getIntent().getStringExtra(Intent.EXTRA_TEXT)); // Intent.EXTRA_HTML_TEXT
+ if (intent.hasExtra(Intent.EXTRA_TEXT))
+ args.putString("body", intent.getStringExtra(Intent.EXTRA_TEXT)); // Intent.EXTRA_HTML_TEXT
- if (getIntent().hasExtra(Intent.EXTRA_STREAM))
- if (Intent.ACTION_SEND_MULTIPLE.equals(getIntent().getAction()))
- args.putParcelableArrayList("attachments", getIntent().getParcelableArrayListExtra(Intent.EXTRA_STREAM));
+ if (intent.hasExtra(Intent.EXTRA_STREAM))
+ if (Intent.ACTION_SEND_MULTIPLE.equals(action))
+ args.putParcelableArrayList("attachments", intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM));
else {
ArrayList uris = new ArrayList<>();
- uris.add((Uri) getIntent().getParcelableExtra(Intent.EXTRA_STREAM));
+ uris.add((Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM));
args.putParcelableArrayList("attachments", uris);
}
-
} else
- args = getIntent().getExtras();
+ args = intent.getExtras();
FragmentCompose fragment = new FragmentCompose();
fragment.setArguments(args);