diff --git a/FAQ.md b/FAQ.md index 61b998dd4c..7d5c5a6069 100644 --- a/FAQ.md +++ b/FAQ.md @@ -393,6 +393,7 @@ Anything on this list is in random order and *might* be added in the near future * [(190) How do I use OpenAI (ChatGPT)?](#user-content-faq190) * [(191) How do I download and keep older messages on my device?](#user-content-faq191) * [(192) How can I resolve 'Couldn't connect to host, port: ...; timeout ...;' ?](#user-content-faq192) +* [(193) How can I import Outlook contacts?](#user-content-faq193) [I have another question.](#user-content-get-support) @@ -5371,6 +5372,23 @@ If you are using a VPN, firewall, ad blocker, or similar, please try to disable
+ +**(193) How can I import Outlook contacts?** + +If there are one or more Outlook or Office 365 accounts configured, +there will be a button in the main settings screen in setup step 2 to download Outlook contacts (since version 1.2076). +After tapping on this button, you can select the account to download contacts for. +Microsoft will ask for permission to read the contacts, +and after granting this permission, the app will download the contacts with an email address into the local contacts' database. + +In the message editor, type the first few letters of the email address or name in any of the email address fields, and the downloaded addresses will be suggested. + +For privacy and security reasons, FairEmail doesn't have permissions to write into the Android address book, and also not to write in the address book of Outlook. +This means that contacts can be downloaded as local contacts only, and can't be synchronized two ways. +If you are looking to synchronize your Outlook contacts with the Android address book, you should look for a sync app in the Play Store which can do this. + +
+

Get support

🌎 [Google Translate](https://translate.google.com/translate?sl=en&u=https://github.com/M66B/FairEmail/blob/master/FAQ.md%23user-content-get-support) diff --git a/app/src/main/java/eu/faircode/email/FragmentSetup.java b/app/src/main/java/eu/faircode/email/FragmentSetup.java index b91110d04f..129aa54d58 100644 --- a/app/src/main/java/eu/faircode/email/FragmentSetup.java +++ b/app/src/main/java/eu/faircode/email/FragmentSetup.java @@ -125,6 +125,7 @@ public class FragmentSetup extends FragmentBase implements SharedPreferences.OnS private Button btnPermissions; private TextView tvPermissionsWhy; private TextView tvImportContacts; + private ImageButton ibGraphContacts; private Button btnGraphContacts; private TextView tvDozeDone; @@ -154,6 +155,7 @@ public class FragmentSetup extends FragmentBase implements SharedPreferences.OnS private Button btnSupport; private ImageButton ibExtra; + private Group grpGraphContacts; private Group grpBackgroundRestricted; private Group grpDataSaver; private Group grpSupport; @@ -216,6 +218,7 @@ public class FragmentSetup extends FragmentBase implements SharedPreferences.OnS btnPermissions = view.findViewById(R.id.btnPermissions); tvPermissionsWhy = view.findViewById(R.id.tvPermissionsWhy); tvImportContacts = view.findViewById(R.id.tvImportContacts); + ibGraphContacts = view.findViewById(R.id.ibGraphContacts); btnGraphContacts = view.findViewById(R.id.btnGraphContacts); tvDozeDone = view.findViewById(R.id.tvDozeDone); @@ -245,6 +248,7 @@ public class FragmentSetup extends FragmentBase implements SharedPreferences.OnS btnSupport = view.findViewById(R.id.btnSupport); ibExtra = view.findViewById(R.id.ibExtra); + grpGraphContacts = view.findViewById(R.id.grpGraphContacts); grpBackgroundRestricted = view.findViewById(R.id.grpBackgroundRestricted); grpDataSaver = view.findViewById(R.id.grpDataSaver); grpSupport = view.findViewById(R.id.grpSupport); @@ -586,6 +590,13 @@ public class FragmentSetup extends FragmentBase implements SharedPreferences.OnS } }); + ibGraphContacts.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Helper.viewFAQ(v.getContext(), 193); + } + }); + btnGraphContacts.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -846,10 +857,10 @@ public class FragmentSetup extends FragmentBase implements SharedPreferences.OnS tvDozeDone.setCompoundDrawables(null, null, null, null); btnDoze.setEnabled(false); tvDoze12.setVisibility(View.GONE); - btnGraphContacts.setVisibility(View.GONE); btnInbox.setEnabled(false); + grpGraphContacts.setVisibility(View.GONE); grpBackgroundRestricted.setVisibility(View.GONE); grpDataSaver.setVisibility(View.GONE); tvStamina.setVisibility(View.GONE); @@ -931,7 +942,7 @@ public class FragmentSetup extends FragmentBase implements SharedPreferences.OnS break; } - btnGraphContacts.setVisibility(outlook ? View.VISIBLE : View.GONE); + grpGraphContacts.setVisibility(outlook ? View.VISIBLE : View.GONE); prefs.edit().putBoolean("has_accounts", done).apply(); } diff --git a/app/src/main/res/layout/fragment_setup.xml b/app/src/main/res/layout/fragment_setup.xml index a2410cdd9e..ea74cb4868 100644 --- a/app/src/main/res/layout/fragment_setup.xml +++ b/app/src/main/res/layout/fragment_setup.xml @@ -677,6 +677,17 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tvPermissionsWhy" /> + +