diff --git a/CHANGELOG.md b/CHANGELOG.md
index b0cdf15147..a17bbd6d01 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,6 +8,7 @@ For support you can use [the contact form](https://contact.faircode.eu/?product=
### Next version
+* Added option to add send-to-self to Android's share menu
* Added seperate filter settings for archive, trash and spam folder
* Small improvements and minor bug fixes
* Updated [translations](https://crowdin.com/project/open-source-email)
diff --git a/app/src/amazon/AndroidManifest.xml b/app/src/amazon/AndroidManifest.xml
index 0f2748d785..f3ad5a708c 100644
--- a/app/src/amazon/AndroidManifest.xml
+++ b/app/src/amazon/AndroidManifest.xml
@@ -337,6 +337,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
.
+
+ Copyright 2018-2023 by Marcel Bokhorst (M66B)
+*/
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Build;
+import android.os.Bundle;
+import android.text.TextUtils;
+
+import androidx.annotation.RequiresApi;
+import androidx.core.net.MailTo;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+public class ActivitySendSelf extends ActivityBase {
+ @Override
+ @RequiresApi(api = Build.VERSION_CODES.M)
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ new SimpleTask() {
+ @Override
+ protected EntityIdentity onExecute(Context context, Bundle args) {
+ DB db = DB.getInstance(context);
+ return db.identity().getPrimaryIdentity();
+ }
+
+ @Override
+ protected void onExecuted(Bundle args, EntityIdentity identity) {
+ Intent intent = getIntent();
+
+ if (identity != null) {
+ Uri uri = intent.getData();
+ if (uri != null && "mailto".equals(uri.getScheme())) {
+ String mailto = uri.toString();
+ int s = mailto.indexOf(':');
+ int q = mailto.indexOf('?', s);
+ if (s > 0) {
+ String query = (q < 0 ? mailto.substring(s + 1) : mailto.substring(s + 1, q));
+ intent.setData(Uri.parse(MailTo.MAILTO_SCHEME + Uri.encode(identity.email) + query));
+ }
+ } else
+ intent.putExtra(Intent.EXTRA_EMAIL, new String[]{identity.email});
+ }
+
+ intent.setClass(ActivitySendSelf.this, ActivityCompose.class);
+ startActivity(intent);
+ finish();
+ }
+
+ @Override
+ protected void onException(Bundle args, Throwable ex) {
+ Log.unexpectedError(getSupportFragmentManager(), ex);
+ //finish();
+ }
+ }.execute(this, new Bundle(), "send:self");
+ }
+}
diff --git a/app/src/main/java/eu/faircode/email/DaoIdentity.java b/app/src/main/java/eu/faircode/email/DaoIdentity.java
index 126f1306e6..55b55420a6 100644
--- a/app/src/main/java/eu/faircode/email/DaoIdentity.java
+++ b/app/src/main/java/eu/faircode/email/DaoIdentity.java
@@ -86,6 +86,13 @@ public interface DaoIdentity {
@Query("SELECT * FROM identity WHERE id = :id")
EntityIdentity getIdentity(long id);
+ @Query("SELECT identity.* FROM identity" +
+ " JOIN account ON account.id = identity.account" +
+ " JOIN folder ON folder.account = identity.account AND folder.type = '" + EntityFolder.DRAFTS + "'" +
+ " WHERE account.`primary` AND account.synchronize" +
+ " AND identity.`primary` AND identity.synchronize")
+ EntityIdentity getPrimaryIdentity();
+
@Query("SELECT * FROM identity WHERE uuid = :uuid")
EntityIdentity getIdentityByUUID(String uuid);
diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java
index 2bfc6077b2..09edb3ea7d 100644
--- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java
+++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java
@@ -109,6 +109,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
private View view;
private ImageButton ibHelp;
private SwitchCompat swPowerMenu;
+ private SwitchCompat swSendSelf;
private SwitchCompat swExternalSearch;
private SwitchCompat swSortAnswers;
private SwitchCompat swExternalAnswer;
@@ -355,6 +356,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
ibHelp = view.findViewById(R.id.ibHelp);
swPowerMenu = view.findViewById(R.id.swPowerMenu);
+ swSendSelf = view.findViewById(R.id.swSendSelf);
swExternalSearch = view.findViewById(R.id.swExternalSearch);
swSortAnswers = view.findViewById(R.id.swSortAnswers);
swExternalAnswer = view.findViewById(R.id.swExternalAnswer);
@@ -534,6 +536,13 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
}
});
+ swSendSelf.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
+ Helper.enableComponent(getContext(), ActivitySendSelf.class, checked);
+ }
+ });
+
swExternalSearch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@@ -2397,6 +2406,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
swSortAnswers.setChecked(prefs.getBoolean("sort_answers", false));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R)
swPowerMenu.setChecked(Helper.isComponentEnabled(getContext(), ServicePowerControl.class));
+ swSendSelf.setChecked(Helper.isComponentEnabled(getContext(), ActivitySendSelf.class));
swExternalSearch.setChecked(Helper.isComponentEnabled(getContext(), ActivitySearch.class));
swExternalAnswer.setChecked(Helper.isComponentEnabled(getContext(), ActivityAnswer.class));
swShortcuts.setChecked(prefs.getBoolean("shortcuts", true));
diff --git a/app/src/main/res/layout/fragment_options_misc.xml b/app/src/main/res/layout/fragment_options_misc.xml
index 8c0642f8a1..2636f9bc27 100644
--- a/app/src/main/res/layout/fragment_options_misc.xml
+++ b/app/src/main/res/layout/fragment_options_misc.xml
@@ -86,6 +86,17 @@
app:layout_constraintTop_toBottomOf="@id/tvCaptionGeneral"
app:switchPadding="12dp" />
+
+
FairEmail
Copyright Ⓒ 2018–2023 by M. Bokhorst
FairEmail search
+ Send to self
FairEmail template
Changelog
FairEmail is an open source email app focused on privacy and security. For this reason some features might work differently from what you are used to.
@@ -791,6 +792,7 @@
Max AES key size: %1$s
Add actions to the Android power menu
+ Add \'send to self\' to Android\'s share menu
Allow other apps to search in messages
Sort reply templates by frequency of use
Provide reply templates to other apps
diff --git a/app/src/play/AndroidManifest.xml b/app/src/play/AndroidManifest.xml
index a077380740..e0bff1db87 100644
--- a/app/src/play/AndroidManifest.xml
+++ b/app/src/play/AndroidManifest.xml
@@ -337,6 +337,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+