Эх сурвалжийг харах

Added Fingerprint Support

Flole 8 жил өмнө
parent
commit
8da1057f3b

+ 29 - 2
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<Class>();
         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));
+    }
+
 }