diff --git a/FAQ.md b/FAQ.md index 2a588a0030..ea78d8377f 100644 --- a/FAQ.md +++ b/FAQ.md @@ -181,6 +181,7 @@ FairEmail follows all the best practices for an email client as decribed in [thi * [(106) Which launchers can show the number of new messages?](#user-content-faq106) * [(107) How do I used colored stars?](#user-content-faq107) * [(108) Can you add permanently delete messages from any folder?](#user-content-faq108) +* [(109) Why is 'select account' available in official releases only?](#user-content-faq109) [I have another question.](#support) @@ -1792,6 +1793,22 @@ Permanently delete messages from other folders would defeat the purpose of the t
+ +**(109) Why is 'select account' available in official releases only?** + +Using *select account* to select and authorize Google accounts require special permission from Google for security and privacy reasons. +This special permission can only be acquired for apps a developer manages and is responsible for. +Third party builds, like the F-Droid builds, are managed by third parties and are the responsibility of these third parties. +So, only these third parties can acquire the required permission from Google. +Since these third parties do not actually support FairEmail, they are most likely not going to request the required permission. + +You can solve this in two ways: + +* Switch to the official version of FairEmail, see [here](https://github.com/M66B/open-source-email/blob/master/README.md#downloads) for the options +* Use app specific passwords, see [this FAQ](#user-content-faq6) + +
+ ## Support If you have another question, want to request a feature or report a bug, you can use [this forum](https://forum.xda-developers.com/android/apps-games/source-email-t3824168). diff --git a/app/src/main/java/eu/faircode/email/FragmentAccount.java b/app/src/main/java/eu/faircode/email/FragmentAccount.java index 6a7061d0e8..e1d4d0cf3d 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAccount.java +++ b/app/src/main/java/eu/faircode/email/FragmentAccount.java @@ -34,6 +34,7 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.graphics.Color; import android.graphics.drawable.GradientDrawable; +import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.os.Handler; @@ -361,6 +362,21 @@ public class FragmentAccount extends FragmentBase { Log.i("Authorize " + provider); if ("com.google".equals(provider.type)) { + if (!Helper.hasValidFingerprint(getContext())) { + Snackbar snackbar = Snackbar.make(view, R.string.title_no_xoauth2, Snackbar.LENGTH_LONG); + final Intent intent = new Intent(Intent.ACTION_VIEW); + intent.setData(Uri.parse(Helper.FAQ_URI + "#user-content-faq19")); + if (intent.resolveActivity(getContext().getPackageManager()) != null) + snackbar.setAction(R.string.title_info, new View.OnClickListener() { + @Override + public void onClick(View view) { + startActivity(intent); + } + }); + snackbar.show(); + return; + } + String permission = Manifest.permission.GET_ACCOUNTS; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O && !Helper.hasPermission(getContext(), permission)) { diff --git a/app/src/main/java/eu/faircode/email/FragmentQuickSetup.java b/app/src/main/java/eu/faircode/email/FragmentQuickSetup.java index 92c4a338d3..512302a678 100644 --- a/app/src/main/java/eu/faircode/email/FragmentQuickSetup.java +++ b/app/src/main/java/eu/faircode/email/FragmentQuickSetup.java @@ -30,6 +30,7 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageManager; +import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.os.Handler; @@ -123,6 +124,21 @@ public class FragmentQuickSetup extends FragmentBase { btnAuthorize.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { + if (!Helper.hasValidFingerprint(getContext())) { + Snackbar snackbar = Snackbar.make(view, R.string.title_no_xoauth2, Snackbar.LENGTH_LONG); + final Intent intent = new Intent(Intent.ACTION_VIEW); + intent.setData(Uri.parse(Helper.FAQ_URI + "#user-content-faq19")); + if (intent.resolveActivity(getContext().getPackageManager()) != null) + snackbar.setAction(R.string.title_info, new View.OnClickListener() { + @Override + public void onClick(View view) { + startActivity(intent); + } + }); + snackbar.show(); + return; + } + String permission = Manifest.permission.GET_ACCOUNTS; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O && !Helper.hasPermission(getContext(), permission)) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 38b5d1bf52..ded53af035 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -317,6 +317,7 @@ Keep-alive/poll interval (minutes) Partial fetch Check + This feature is available in original versions only Name missing Email address missing Email address invalid