diff --git a/SETUP.md b/SETUP.md new file mode 100644 index 0000000000..65d61a53ab --- /dev/null +++ b/SETUP.md @@ -0,0 +1,55 @@ +# Setup help + +Mostly setting up FairEmail is fairly simple. +You'll need to add at least one account to receive email and at least one identity if you want to send email. + +## Requirements + +An internet connection is required to add accounts and identities. + +Your email provider should support IMAP with the IDLE and UIDPLUS extensions. +All up-to-date email providers do, with as notable exception Yahoo! +IMAP IDLE is required to limit battery usage, +see [this FAQ](https://github.com/M66B/open-source-email/blob/master/FAQ.md#FAQ5) for more details. + +Your email provider should support secure connections. +If your provider doesn't support secure connections and you care at least a little about your privacy, +you are strongly advised to switch to another provider. + +For security reasons, your account need to have a non empty password set. + +## Account + +To add an account, tap on *Manage accounts* and tap on the orange *add* button at the bottom. +Select a provider from the list, enter the username, which is mostly your email address and enter your password. +If you use Gmail, tap *Select account* to fill in the username and password. +Tap *Check* to let FairEmail connect to the email server and fetch a list of system folders. +After reviewing the system folder selection you can add the account by tapping *Save*. + +If your provider is not in the list of providers, select *Custom*. +Enter the domain name, for example *gmail.com* and tap *Get settings*. +If your provider supports [auto-discovery](https://tools.ietf.org/html/rfc6186), FairEmail will fill in the host name and port number, +else check the setup instructions of your provider for the right IMAP host name and port number. + +## Identity + +Similarly, to add an identity, tap on *Manage identity* and tap on the orange *add* button at the bottom. +Enter the name you want to appear in de from address of the emails you send and select a linked account. +Tap *Save* to add the identity. + +See [this FAQ](https://github.com/M66B/open-source-email/blob/master/FAQ.md#FAQ9) about using aliases. + +## Permissions + +If you want to lookup email addresses, have contact photos shown, etc, you'll need to grant read contacts permission to FairEmail. +Just tap *Grant permissions* and select *Allow*. + +## Battery optimizations + +On recent Android versions, Android will put apps to sleep when the screen is off for some time to reduce battery usage. +If you want to receive new emails without delays, you should disable battery optimizations for FairEmail. +Tap *Disable battery optimizations* and follow the instructions. + +## Questions + +If you have a question or problem, please [see here](https://github.com/M66B/open-source-email/blob/master/FAQ.md). diff --git a/app/src/main/java/eu/faircode/email/FragmentSetup.java b/app/src/main/java/eu/faircode/email/FragmentSetup.java index 21d095e6f4..5277bd29b8 100644 --- a/app/src/main/java/eu/faircode/email/FragmentSetup.java +++ b/app/src/main/java/eu/faircode/email/FragmentSetup.java @@ -45,6 +45,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.CompoundButton; +import android.widget.ImageButton; import android.widget.TextView; import android.widget.ToggleButton; @@ -74,6 +75,8 @@ import static android.app.Activity.RESULT_OK; public class FragmentSetup extends FragmentEx { private ViewGroup view; + private ImageButton ibHelp; + private Button btnAccount; private TextView tvAccountDone; @@ -116,6 +119,8 @@ public class FragmentSetup extends FragmentEx { view = (ViewGroup) inflater.inflate(R.layout.fragment_setup, container, false); // Get controls + ibHelp = view.findViewById(R.id.ibHelp); + btnAccount = view.findViewById(R.id.btnAccount); tvAccountDone = view.findViewById(R.id.tvAccountDone); @@ -135,6 +140,13 @@ public class FragmentSetup extends FragmentEx { // Wire controls + ibHelp.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + startActivity(getIntentHelp()); + } + }); + btnAccount.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -230,6 +242,7 @@ public class FragmentSetup extends FragmentEx { }); // Initialize + ibHelp.setVisibility(View.GONE); tvAccountDone.setText(null); tvAccountDone.setCompoundDrawables(null, null, null, null); @@ -292,6 +305,9 @@ public class FragmentSetup extends FragmentEx { public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); + PackageManager pm = getContext().getPackageManager(); + ibHelp.setVisibility(getIntentHelp().resolveActivity(pm) == null ? View.GONE : View.VISIBLE); + DB db = DB.getInstance(getContext()); db.account().liveAccounts(true).observe(getViewLifecycleOwner(), new Observer>() { @@ -395,6 +411,12 @@ public class FragmentSetup extends FragmentEx { } } + private Intent getIntentHelp() { + Intent intent = new Intent(Intent.ACTION_VIEW); + intent.setData(Uri.parse("https://github.com/M66B/open-source-email/blob/master/SETUP.md")); + return intent; + } + private static Intent getIntentExport() { Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT); intent.addCategory(Intent.CATEGORY_OPENABLE); diff --git a/app/src/main/res/layout/fragment_setup.xml b/app/src/main/res/layout/fragment_setup.xml index da5021b59a..bba3e1acc2 100644 --- a/app/src/main/res/layout/fragment_setup.xml +++ b/app/src/main/res/layout/fragment_setup.xml @@ -13,6 +13,15 @@ + +