diff --git a/app/src/main/java/eu/faircode/email/ActivityBase.java b/app/src/main/java/eu/faircode/email/ActivityBase.java index 2bb0b613bd..a9fb3bba52 100644 --- a/app/src/main/java/eu/faircode/email/ActivityBase.java +++ b/app/src/main/java/eu/faircode/email/ActivityBase.java @@ -28,6 +28,7 @@ import android.content.res.Configuration; import android.os.Bundle; import android.os.PowerManager; import android.view.MenuItem; +import android.view.WindowManager; import android.widget.Toast; import androidx.annotation.NonNull; @@ -72,6 +73,9 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc this.contacts = hasPermission(Manifest.permission.READ_CONTACTS); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); + boolean no_history = prefs.getBoolean("no_history", false); + if (no_history) + getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE); if (!this.getClass().equals(ActivityMain.class)) { String theme = prefs.getString("theme", "light"); @@ -205,8 +209,6 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc @Override public void startActivity(Intent intent) { try { - if (Helper.noHistory(this)) - intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); super.startActivity(intent); } catch (ActivityNotFoundException ex) { Log.e(ex); @@ -217,8 +219,6 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc @Override public void startActivityForResult(Intent intent, int requestCode) { try { - if (Helper.noHistory(this)) - intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); super.startActivityForResult(intent, requestCode); } catch (ActivityNotFoundException ex) { Log.e(ex); diff --git a/app/src/main/java/eu/faircode/email/FragmentBase.java b/app/src/main/java/eu/faircode/email/FragmentBase.java index d6286df08f..6e57002abf 100644 --- a/app/src/main/java/eu/faircode/email/FragmentBase.java +++ b/app/src/main/java/eu/faircode/email/FragmentBase.java @@ -90,8 +90,6 @@ public class FragmentBase extends Fragment { @Override public void startActivity(Intent intent) { try { - if (Helper.noHistory(getContext())) - intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); super.startActivity(intent); } catch (ActivityNotFoundException ex) { Log.e(ex); @@ -102,8 +100,6 @@ public class FragmentBase extends Fragment { @Override public void startActivityForResult(Intent intent, int requestCode) { try { - if (Helper.noHistory(getContext())) - intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); super.startActivityForResult(intent, requestCode); } catch (ActivityNotFoundException ex) { Log.e(ex); diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogBase.java b/app/src/main/java/eu/faircode/email/FragmentDialogBase.java index 4911a15f4d..4992137580 100644 --- a/app/src/main/java/eu/faircode/email/FragmentDialogBase.java +++ b/app/src/main/java/eu/faircode/email/FragmentDialogBase.java @@ -1,8 +1,10 @@ package eu.faircode.email; +import android.content.ActivityNotFoundException; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; +import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -136,15 +138,21 @@ public class FragmentDialogBase extends DialogFragment { @Override public void startActivity(Intent intent) { - if (Helper.noHistory(getContext())) - intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); - super.startActivity(intent); + try { + super.startActivity(intent); + } catch (ActivityNotFoundException ex) { + Log.e(ex); + ToastEx.makeText(getContext(), getString(R.string.title_no_viewer, intent.getAction()), Toast.LENGTH_LONG).show(); + } } @Override public void startActivityForResult(Intent intent, int requestCode) { - if (Helper.noHistory(getContext())) - intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); - super.startActivityForResult(intent, requestCode); + try { + super.startActivityForResult(intent, requestCode); + } catch (ActivityNotFoundException ex) { + Log.e(ex); + ToastEx.makeText(getContext(), getString(R.string.title_no_viewer, intent.getAction()), Toast.LENGTH_LONG).show(); + } } } diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsPrivacy.java b/app/src/main/java/eu/faircode/email/FragmentOptionsPrivacy.java index 6aed861edd..c8427d5481 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsPrivacy.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsPrivacy.java @@ -73,7 +73,8 @@ public class FragmentOptionsPrivacy extends FragmentBase implements SharedPrefer swNoHistory.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { - prefs.edit().putBoolean("no_history", checked).apply(); + prefs.edit().putBoolean("no_history", checked).commit(); // apply won't work here + restart(); } }); diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index 26ca55445c..e1e1106052 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -742,13 +742,6 @@ public class Helper { } } - static boolean noHistory(Context context) { - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); - boolean biometrics = prefs.getBoolean("biometrics", false); - boolean no_history = prefs.getBoolean("no_history", false); - return (biometrics || no_history); - } - static boolean shouldAuthenticate(Context context) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); boolean biometrics = prefs.getBoolean("biometrics", false); diff --git a/app/src/main/res/layout/fragment_options_privacy.xml b/app/src/main/res/layout/fragment_options_privacy.xml index 4b48d039d2..ae8a1d405f 100644 --- a/app/src/main/res/layout/fragment_options_privacy.xml +++ b/app/src/main/res/layout/fragment_options_privacy.xml @@ -33,5 +33,17 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/swDisableTracking" app:switchPadding="12dp" /> + +