Use flag secure to hide from recents

pull/162/head
M66B 6 years ago
parent 41f5425ffa
commit 6f82756fb3

@ -28,6 +28,7 @@ import android.content.res.Configuration;
import android.os.Bundle; import android.os.Bundle;
import android.os.PowerManager; import android.os.PowerManager;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.WindowManager;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@ -72,6 +73,9 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc
this.contacts = hasPermission(Manifest.permission.READ_CONTACTS); this.contacts = hasPermission(Manifest.permission.READ_CONTACTS);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 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)) { if (!this.getClass().equals(ActivityMain.class)) {
String theme = prefs.getString("theme", "light"); String theme = prefs.getString("theme", "light");
@ -205,8 +209,6 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc
@Override @Override
public void startActivity(Intent intent) { public void startActivity(Intent intent) {
try { try {
if (Helper.noHistory(this))
intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
super.startActivity(intent); super.startActivity(intent);
} catch (ActivityNotFoundException ex) { } catch (ActivityNotFoundException ex) {
Log.e(ex); Log.e(ex);
@ -217,8 +219,6 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc
@Override @Override
public void startActivityForResult(Intent intent, int requestCode) { public void startActivityForResult(Intent intent, int requestCode) {
try { try {
if (Helper.noHistory(this))
intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
super.startActivityForResult(intent, requestCode); super.startActivityForResult(intent, requestCode);
} catch (ActivityNotFoundException ex) { } catch (ActivityNotFoundException ex) {
Log.e(ex); Log.e(ex);

@ -90,8 +90,6 @@ public class FragmentBase extends Fragment {
@Override @Override
public void startActivity(Intent intent) { public void startActivity(Intent intent) {
try { try {
if (Helper.noHistory(getContext()))
intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
super.startActivity(intent); super.startActivity(intent);
} catch (ActivityNotFoundException ex) { } catch (ActivityNotFoundException ex) {
Log.e(ex); Log.e(ex);
@ -102,8 +100,6 @@ public class FragmentBase extends Fragment {
@Override @Override
public void startActivityForResult(Intent intent, int requestCode) { public void startActivityForResult(Intent intent, int requestCode) {
try { try {
if (Helper.noHistory(getContext()))
intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
super.startActivityForResult(intent, requestCode); super.startActivityForResult(intent, requestCode);
} catch (ActivityNotFoundException ex) { } catch (ActivityNotFoundException ex) {
Log.e(ex); Log.e(ex);

@ -1,8 +1,10 @@
package eu.faircode.email; package eu.faircode.email;
import android.content.ActivityNotFoundException;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.widget.Toast;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
@ -136,15 +138,21 @@ public class FragmentDialogBase extends DialogFragment {
@Override @Override
public void startActivity(Intent intent) { public void startActivity(Intent intent) {
if (Helper.noHistory(getContext())) try {
intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); super.startActivity(intent);
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 @Override
public void startActivityForResult(Intent intent, int requestCode) { public void startActivityForResult(Intent intent, int requestCode) {
if (Helper.noHistory(getContext())) try {
intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); super.startActivityForResult(intent, requestCode);
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();
}
} }
} }

@ -73,7 +73,8 @@ public class FragmentOptionsPrivacy extends FragmentBase implements SharedPrefer
swNoHistory.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { swNoHistory.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override @Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { 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();
} }
}); });

@ -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) { static boolean shouldAuthenticate(Context context) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean biometrics = prefs.getBoolean("biometrics", false); boolean biometrics = prefs.getBoolean("biometrics", false);

@ -33,5 +33,17 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/swDisableTracking" app:layout_constraintTop_toBottomOf="@id/swDisableTracking"
app:switchPadding="12dp" /> app:switchPadding="12dp" />
<TextView
android:id="@+id/tvNoHistoryHint"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="48dp"
android:text="@string/title_advanced_english_hint"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="italic"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/swNoHistory" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView> </ScrollView>

Loading…
Cancel
Save