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
This commit is contained in:
Amith Yamasani
2012-09-14 13:36:29 -07:00
parent cd6e7e1b5c
commit 4b4b954ddf
2 changed files with 8 additions and 2 deletions

View File

@@ -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");
}

View File

@@ -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,