summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/java/com/android/internal/widget/LockPatternUtils.java8
-rw-r--r--policy/src/com/android/internal/policy/impl/FaceUnlock.java3
-rw-r--r--policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java5
3 files changed, 14 insertions, 2 deletions
diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java
index 4d308dd..f77e8f3 100644
--- a/core/java/com/android/internal/widget/LockPatternUtils.java
+++ b/core/java/com/android/internal/widget/LockPatternUtils.java
@@ -223,6 +223,14 @@ public class LockPatternUtils {
}
}
+ public int getCurrentUser() {
+ if (Process.myUid() == Process.SYSTEM_UID) {
+ return mCurrentUserId;
+ } else {
+ throw new SecurityException("Only the system process can get the current user");
+ }
+ }
+
public void removeUser(int userId) {
if (Process.myUid() == Process.SYSTEM_UID) {
try {
diff --git a/policy/src/com/android/internal/policy/impl/FaceUnlock.java b/policy/src/com/android/internal/policy/impl/FaceUnlock.java
index 985dcd3..31fbaaf 100644
--- a/policy/src/com/android/internal/policy/impl/FaceUnlock.java
+++ b/policy/src/com/android/internal/policy/impl/FaceUnlock.java
@@ -213,7 +213,8 @@ public class FaceUnlock implements Handler.Callback {
if (DEBUG) Log.d(TAG, "before bind to FaceLock service");
mContext.bindService(new Intent(IFaceLockInterface.class.getName()),
mConnection,
- Context.BIND_AUTO_CREATE);
+ Context.BIND_AUTO_CREATE,
+ mLockPatternUtils.getCurrentUser());
if (DEBUG) Log.d(TAG, "after bind to FaceLock service");
mBoundToService = true;
} else {
diff --git a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
index 596040c..d42f96a 100644
--- a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
+++ b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
@@ -703,6 +703,7 @@ public class LockPatternKeyguardView extends KeyguardViewBase {
@Override
public void onUserChanged(int userId) {
+ mFaceUnlock.stopAndUnbind();
mLockPatternUtils.setCurrentUser(userId);
updateScreen(getInitialMode(), true);
}
@@ -817,7 +818,9 @@ public class LockPatternKeyguardView extends KeyguardViewBase {
if (force || mUnlockScreen == null || unlockMode != mUnlockScreenMode) {
boolean restartFaceLock = mFaceUnlock.stopIfRunning();
recreateUnlockScreen(unlockMode);
- if (restartFaceLock) mFaceUnlock.activateIfAble(mHasOverlay);
+ if (restartFaceLock || force) {
+ mFaceUnlock.activateIfAble(mHasOverlay);
+ }
}
}