mirror of https://github.com/M66B/FairEmail.git
Free to use
This commit is contained in:
parent
bd5df69465
commit
a7ee900626
6
FAQ.md
6
FAQ.md
|
@ -962,6 +962,9 @@ See also [this FAQ](#user-content-faq15).
|
||||||
<a name="faq19"></a>
|
<a name="faq19"></a>
|
||||||
**(19) Why are the pro features so expensive?**
|
**(19) Why are the pro features so expensive?**
|
||||||
|
|
||||||
|
First of all, only some convenience and advanced features need to be purchased which means that FairEmail is basically free to use.
|
||||||
|
Please see the Play store description of the app or [see here](https://email.faircode.eu/#pro) for a complete list of all pro features.
|
||||||
|
|
||||||
The right question is "*why are there so many taxes and fees?*":
|
The right question is "*why are there so many taxes and fees?*":
|
||||||
|
|
||||||
* VAT: 25 % (depending on your country)
|
* VAT: 25 % (depending on your country)
|
||||||
|
@ -971,10 +974,9 @@ The right question is "*why are there so many taxes and fees?*":
|
||||||
|
|
||||||
So, what is left for the developer is just a fraction of what you pay.
|
So, what is left for the developer is just a fraction of what you pay.
|
||||||
|
|
||||||
Note that only some convenience and advanced features need to be purchased which means that FairEmail is basically free to use.
|
|
||||||
|
|
||||||
Also note that most free apps will appear not to be sustainable in the end, whereas FairEmail is properly maintained and supported,
|
Also note that most free apps will appear not to be sustainable in the end, whereas FairEmail is properly maintained and supported,
|
||||||
and that free apps may have a catch, like sending privacy sensitive information to the internet.
|
and that free apps may have a catch, like sending privacy sensitive information to the internet.
|
||||||
|
There are no privacy violating ads in the app either.
|
||||||
|
|
||||||
I have been working on FairEmail almost every day for more than two years, so I think the price is more than reasonable.
|
I have been working on FairEmail almost every day for more than two years, so I think the price is more than reasonable.
|
||||||
For this reason there won't be discounts either.
|
For this reason there won't be discounts either.
|
||||||
|
|
|
@ -71,6 +71,7 @@ public class FragmentSetup extends FragmentBase {
|
||||||
private Button btnIdentity;
|
private Button btnIdentity;
|
||||||
private TextView tvExchangeSupport;
|
private TextView tvExchangeSupport;
|
||||||
private TextView tvIdentityWhat;
|
private TextView tvIdentityWhat;
|
||||||
|
private TextView tvFree;
|
||||||
private TextView tvNoComposable;
|
private TextView tvNoComposable;
|
||||||
|
|
||||||
private TextView tvPermissionsDone;
|
private TextView tvPermissionsDone;
|
||||||
|
@ -126,6 +127,7 @@ public class FragmentSetup extends FragmentBase {
|
||||||
btnIdentity = view.findViewById(R.id.btnIdentity);
|
btnIdentity = view.findViewById(R.id.btnIdentity);
|
||||||
tvExchangeSupport = view.findViewById(R.id.tvExchangeSupport);
|
tvExchangeSupport = view.findViewById(R.id.tvExchangeSupport);
|
||||||
tvIdentityWhat = view.findViewById(R.id.tvIdentityWhat);
|
tvIdentityWhat = view.findViewById(R.id.tvIdentityWhat);
|
||||||
|
tvFree = view.findViewById(R.id.tvFree);
|
||||||
tvNoComposable = view.findViewById(R.id.tvNoComposable);
|
tvNoComposable = view.findViewById(R.id.tvNoComposable);
|
||||||
|
|
||||||
tvPermissionsDone = view.findViewById(R.id.tvPermissionsDone);
|
tvPermissionsDone = view.findViewById(R.id.tvPermissionsDone);
|
||||||
|
@ -277,6 +279,14 @@ public class FragmentSetup extends FragmentBase {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
tvFree.setPaintFlags(tvFree.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
|
||||||
|
tvFree.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
Helper.viewFAQ(v.getContext(), 19);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
btnPermissions.setOnClickListener(new View.OnClickListener() {
|
btnPermissions.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="12dp"
|
||||||
|
android:height="12dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24"
|
||||||
|
android:tint="?attr/colorControlNormal">
|
||||||
|
<path
|
||||||
|
android:fillColor="@android:color/white"
|
||||||
|
android:pathData="M19,19H5V5h7V3H5c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2v-7h-2v7zM14,3v2h3.59l-9.83,9.83 1.41,1.41L19,6.41V10h2V3h-7z"/>
|
||||||
|
</vector>
|
|
@ -86,6 +86,9 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="12dp"
|
android:layout_marginTop="12dp"
|
||||||
|
android:drawableEnd="@drawable/twotone_open_in_new_12"
|
||||||
|
android:drawablePadding="6dp"
|
||||||
|
android:drawableTint="?android:attr/textColorLink"
|
||||||
android:text="@string/title_setup_wizard_new"
|
android:text="@string/title_setup_wizard_new"
|
||||||
android:textAlignment="center"
|
android:textAlignment="center"
|
||||||
android:textAppearance="@style/TextAppearance.AppCompat.Small"
|
android:textAppearance="@style/TextAppearance.AppCompat.Small"
|
||||||
|
@ -249,6 +252,9 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="12dp"
|
android:layout_marginTop="12dp"
|
||||||
|
android:drawableEnd="@drawable/twotone_open_in_new_12"
|
||||||
|
android:drawablePadding="6dp"
|
||||||
|
android:drawableTint="?android:attr/textColorLink"
|
||||||
android:text="@string/title_setup_exchange_support"
|
android:text="@string/title_setup_exchange_support"
|
||||||
android:textAppearance="@style/TextAppearance.AppCompat.Small"
|
android:textAppearance="@style/TextAppearance.AppCompat.Small"
|
||||||
android:textColor="?android:attr/textColorLink"
|
android:textColor="?android:attr/textColorLink"
|
||||||
|
@ -260,6 +266,9 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="12dp"
|
android:layout_marginTop="12dp"
|
||||||
|
android:drawableEnd="@drawable/twotone_open_in_new_12"
|
||||||
|
android:drawablePadding="6dp"
|
||||||
|
android:drawableTint="?android:attr/textColorLink"
|
||||||
android:text="@string/title_setup_identity_what"
|
android:text="@string/title_setup_identity_what"
|
||||||
android:textAppearance="@style/TextAppearance.AppCompat.Small"
|
android:textAppearance="@style/TextAppearance.AppCompat.Small"
|
||||||
android:textColor="?android:attr/textColorLink"
|
android:textColor="?android:attr/textColorLink"
|
||||||
|
@ -288,6 +297,21 @@
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/tvNoComposable" />
|
app:layout_constraintTop_toBottomOf="@id/tvNoComposable" />
|
||||||
|
|
||||||
|
<eu.faircode.email.FixedTextView
|
||||||
|
android:id="@+id/tvFree"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="12dp"
|
||||||
|
android:drawableEnd="@drawable/twotone_open_in_new_12"
|
||||||
|
android:drawablePadding="6dp"
|
||||||
|
android:drawableTint="?android:attr/textColorLink"
|
||||||
|
android:text="@string/title_setup_free"
|
||||||
|
android:textAppearance="@style/TextAppearance.AppCompat.Small"
|
||||||
|
android:textColor="?android:attr/textColorLink"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/btnInbox" />
|
||||||
|
|
||||||
<!-- permissions -->
|
<!-- permissions -->
|
||||||
|
|
||||||
<View
|
<View
|
||||||
|
@ -298,7 +322,7 @@
|
||||||
android:background="?attr/colorSeparator"
|
android:background="?attr/colorSeparator"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/btnInbox" />
|
app:layout_constraintTop_toBottomOf="@id/tvFree" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/two"
|
android:id="@+id/two"
|
||||||
|
@ -439,6 +463,9 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="12dp"
|
android:layout_marginTop="12dp"
|
||||||
|
android:drawableEnd="@drawable/twotone_open_in_new_12"
|
||||||
|
android:drawablePadding="6dp"
|
||||||
|
android:drawableTint="?android:attr/textColorLink"
|
||||||
android:text="@string/title_setup_doze_battery"
|
android:text="@string/title_setup_doze_battery"
|
||||||
android:textAppearance="@style/TextAppearance.AppCompat.Small"
|
android:textAppearance="@style/TextAppearance.AppCompat.Small"
|
||||||
android:textColor="?android:attr/textColorLink"
|
android:textColor="?android:attr/textColorLink"
|
||||||
|
@ -450,6 +477,9 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="12dp"
|
android:layout_marginTop="12dp"
|
||||||
|
android:drawableEnd="@drawable/twotone_open_in_new_12"
|
||||||
|
android:drawablePadding="6dp"
|
||||||
|
android:drawableTint="?android:attr/textColorLink"
|
||||||
android:text="@string/title_setup_doze_stopped"
|
android:text="@string/title_setup_doze_stopped"
|
||||||
android:textAppearance="@style/TextAppearance.AppCompat.Small"
|
android:textAppearance="@style/TextAppearance.AppCompat.Small"
|
||||||
android:textColor="?android:attr/textColorLink"
|
android:textColor="?android:attr/textColorLink"
|
||||||
|
|
|
@ -203,6 +203,7 @@
|
||||||
<string name="title_setup_grant_again">Grant required permissions</string>
|
<string name="title_setup_grant_again">Grant required permissions</string>
|
||||||
<string name="title_setup_exchange_support">Is Microsoft Exchange supported?</string>
|
<string name="title_setup_exchange_support">Is Microsoft Exchange supported?</string>
|
||||||
<string name="title_setup_identity_what">What is an identity?</string>
|
<string name="title_setup_identity_what">What is an identity?</string>
|
||||||
|
<string name="title_setup_free">Is this app free to use?</string>
|
||||||
<string name="title_setup_permissions">Grant permissions</string>
|
<string name="title_setup_permissions">Grant permissions</string>
|
||||||
<string name="title_setup_permissions_remark">To access contact information (optional)</string>
|
<string name="title_setup_permissions_remark">To access contact information (optional)</string>
|
||||||
<string name="title_setup_doze">Disable battery optimizations</string>
|
<string name="title_setup_doze">Disable battery optimizations</string>
|
||||||
|
|
Loading…
Reference in New Issue