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