From 9d0182514663d4df7c7fb1708b86b1327dd63428 Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 24 Jul 2019 07:38:34 +0200 Subject: [PATCH] Update last authentication on user interaction --- .../java/eu/faircode/email/ActivityBase.java | 17 ++++++++++++++++- app/src/main/java/eu/faircode/email/Helper.java | 2 +- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ActivityBase.java b/app/src/main/java/eu/faircode/email/ActivityBase.java index c563de3749..f5e8e62092 100644 --- a/app/src/main/java/eu/faircode/email/ActivityBase.java +++ b/app/src/main/java/eu/faircode/email/ActivityBase.java @@ -140,11 +140,26 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc super.onConfigurationChanged(newConfig); } + @Override + public void onUserInteraction() { + Log.i("User interaction"); + + if (!this.getClass().equals(ActivityMain.class) && Helper.shouldAuthenticate(this)) { + finish(); + startActivity(new Intent(this, ActivityMain.class)); + } + } + + @Override + protected void onUserLeaveHint() { + Log.i("User leaving"); + } + @Override protected void onStop() { super.onStop(); - PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); + PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); if (pm != null && !pm.isInteractive()) { Log.i("Stop with screen off"); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index 2918d6304e..03e48e2c0d 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -697,11 +697,11 @@ public class Helper { static boolean shouldAuthenticate(Context context) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); boolean biometrics = prefs.getBoolean("biometrics", false); - long biometrics_timeout = prefs.getInt("biometrics_timeout", 2) * 60 * 1000L; if (biometrics) { long now = new Date().getTime(); long last_authentication = prefs.getLong("last_authentication", 0); + long biometrics_timeout = prefs.getInt("biometrics_timeout", 2) * 60 * 1000L; Log.i("Authentication valid until=" + new Date(last_authentication + biometrics_timeout)); if (last_authentication + biometrics_timeout < now)