1 package com
.owncloud
.android
.authentication
;
3 import android
.app
.Activity
;
4 import android
.content
.Intent
;
5 import android
.content
.SharedPreferences
;
6 import android
.preference
.PreferenceManager
;
8 import com
.owncloud
.android
.MainApp
;
9 import com
.owncloud
.android
.ui
.activity
.PinCodeActivity
;
11 import java
.util
.HashSet
;
14 public class PassCodeManager
{
16 private static final Set
<Class
> sExemptOfPasscodeActivites
;
19 sExemptOfPasscodeActivites
= new HashSet
<Class
>();
20 sExemptOfPasscodeActivites
.add(AuthenticatorActivity
.class); // maybe not so good idea
21 sExemptOfPasscodeActivites
.add(PinCodeActivity
.class);
24 private static int PASS_CODE_TIMEOUT
= 1000;
26 public static PassCodeManager mPassCodeManagerInstance
= null
;
28 public static PassCodeManager
getPassCodeManager() {
29 if (mPassCodeManagerInstance
== null
) {
30 mPassCodeManagerInstance
= new PassCodeManager();
32 return mPassCodeManagerInstance
;
35 private Long mTimestamp
= 0l;
36 private int mVisibleActivitiesCounter
= 0;
38 protected PassCodeManager() {};
40 public void onActivityStarted(Activity activity
) {
41 if (!sExemptOfPasscodeActivites
.contains(activity
.getClass()) &&
42 passCodeShouldBeRequested()
45 Intent i
= new Intent(MainApp
.getAppContext(), PinCodeActivity
.class);
46 i
.setAction(PinCodeActivity
.ACTION_REQUEST
);
47 activity
.startActivity(i
);
50 mVisibleActivitiesCounter
++; // AFTER passCodeShouldBeRequested was checked
53 public void onActivityStopped(Activity activity
) {
54 if (mVisibleActivitiesCounter
> 0) {
55 mVisibleActivitiesCounter
--;
60 private boolean passCodeShouldBeRequested(){
61 if ((System
.currentTimeMillis() - mTimestamp
) > PASS_CODE_TIMEOUT
&&
62 mVisibleActivitiesCounter
<= 0
64 SharedPreferences appPrefs
= PreferenceManager
.getDefaultSharedPreferences(MainApp
.getAppContext());
65 if (appPrefs
.getBoolean("set_pincode", false
)) {
72 private void setUnlockTimestamp() {
73 mTimestamp
= System
.currentTimeMillis();