diff options
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); + } } } |