diff --git a/src/main/java/com/owncloud/android/authentication/PassCodeManager.java b/src/main/java/com/owncloud/android/authentication/PassCodeManager.java index cc4dd383d8..0317c9f982 100644 --- a/src/main/java/com/owncloud/android/authentication/PassCodeManager.java +++ b/src/main/java/com/owncloud/android/authentication/PassCodeManager.java @@ -28,6 +28,7 @@ import android.preference.PreferenceManager; import android.view.WindowManager; import com.owncloud.android.MainApp; +import com.owncloud.android.ui.activity.FingerprintActivity; import com.owncloud.android.ui.activity.PassCodeActivity; import java.util.HashSet; @@ -40,6 +41,7 @@ public class PassCodeManager { static { sExemptOfPasscodeActivites = new HashSet(); sExemptOfPasscodeActivites.add(PassCodeActivity.class); + sExemptOfPasscodeActivites.add(FingerprintActivity.class); // other activities may be exempted, if needed } @@ -61,7 +63,7 @@ public class PassCodeManager { protected PassCodeManager() {}; public void onActivityCreated(Activity activity) { - if (passCodeIsEnabled()) { + if (passCodeIsEnabled() || fingerprintIsEnabled()) { activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE); } else { activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE); @@ -80,6 +82,17 @@ public class PassCodeManager { } + if (!sExemptOfPasscodeActivites.contains(activity.getClass()) && + fingerprintShouldBeRequested() && FingerprintActivity.isFingerprintReady(MainApp.getAppContext()) + ){ + + Intent i = new Intent(MainApp.getAppContext(), FingerprintActivity.class); + i.setAction(PassCodeActivity.ACTION_CHECK); + i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); + activity.startActivity(i); + + } + mVisibleActivitiesCounter++; // keep it AFTER passCodeShouldBeRequested was checked } @@ -89,7 +102,7 @@ public class PassCodeManager { } setUnlockTimestamp(); PowerManager powerMgr = (PowerManager) activity.getSystemService(Context.POWER_SERVICE); - if (passCodeIsEnabled() && powerMgr != null && !powerMgr.isScreenOn()) { + if ((passCodeIsEnabled() || fingerprintIsEnabled())&& powerMgr != null && !powerMgr.isScreenOn()) { activity.moveTaskToBack(true); } } @@ -112,4 +125,18 @@ public class PassCodeManager { return (appPrefs.getBoolean(PassCodeActivity.PREFERENCE_SET_PASSCODE, false)); } + private boolean fingerprintShouldBeRequested(){ + if ((System.currentTimeMillis() - mTimestamp) > PASS_CODE_TIMEOUT && + mVisibleActivitiesCounter <= 0 + ){ + return fingerprintIsEnabled(); + } + return false; + } + + private boolean fingerprintIsEnabled() { + SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(MainApp.getAppContext()); + return (appPrefs.getBoolean(FingerprintActivity.PREFERENCE_USE_FINGERPRINT, false)); + } + }