From 4b4b954ddf34af51576441f0e3eca6d19150aada Mon Sep 17 00:00:00 2001 From: Amith Yamasani Date: Fri, 14 Sep 2012 13:36:29 -0700 Subject: [PATCH] Fix face unlock for multiple users Bug: 7152537 Not all instances of LockPatternUtils are getting updated with the current user, so query it directly from the Activity Manager. Change-Id: I46395c3e00feecd0edfe4228f8d7966f425519f2 --- .../java/com/android/internal/widget/LockPatternUtils.java | 7 ++++++- .../android/internal/policy/impl/keyguard/FaceUnlock.java | 3 ++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java index 4777c1621ae5f..4ecaf15a12033 100644 --- a/core/java/com/android/internal/widget/LockPatternUtils.java +++ b/core/java/com/android/internal/widget/LockPatternUtils.java @@ -20,6 +20,7 @@ import com.android.internal.R; import com.android.internal.telephony.ITelephony; import com.google.android.collect.Lists; +import android.app.ActivityManagerNative; import android.app.admin.DevicePolicyManager; import android.content.BroadcastReceiver; import android.content.ContentResolver; @@ -225,7 +226,11 @@ public class LockPatternUtils { public int getCurrentUser() { if (Process.myUid() == Process.SYSTEM_UID) { - return mCurrentUserId; + try { + return ActivityManagerNative.getDefault().getCurrentUser().id; + } catch (RemoteException re) { + return mCurrentUserId; + } } else { throw new SecurityException("Only the system process can get the current user"); } diff --git a/policy/src/com/android/internal/policy/impl/keyguard/FaceUnlock.java b/policy/src/com/android/internal/policy/impl/keyguard/FaceUnlock.java index 5a0a2287cec31..a4159d0e69cf0 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/FaceUnlock.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/FaceUnlock.java @@ -153,7 +153,8 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback { // This must show before bind to guarantee that Face Unlock has a place to display show(SERVICE_STARTUP_VIEW_TIMEOUT); if (!mBoundToService) { - Log.d(TAG, "Binding to Face Unlock service"); + Log.d(TAG, "Binding to Face Unlock service for user=" + + mLockPatternUtils.getCurrentUser()); mContext.bindService(new Intent(IFaceLockInterface.class.getName()), mConnection, Context.BIND_AUTO_CREATE,