Use correct user ID for face bypass pref controller
Ensures that the lockscreen bypass preference toggle shown on the face unlock settings screen always uses the correct user ID. This fixes an issue where the preference toggle for a guest user would use the primary user's setting when multiple biometrics are supported. Test: Manual: 1. Turn on Settings > System > Multiple users > Use multiple users 2. Add a guest account and switch to it 3. Enroll a face for Face Unlock on the guest account 4. From the Face Unlock settings screen, toggle "Skip lock screen" 5. Ensure that face bypasses lock screen iff this toggle is on 6. Switch back to the owner account and repeat steps 3-5 Fixes: 193488905 Change-Id: I2da4ce466fe0446cccc9119c90bd322daf627339
This commit is contained in:
@@ -162,6 +162,11 @@ public class FaceSettings extends DashboardFragment {
|
|||||||
R.string.security_settings_face_profile_preference_title));
|
R.string.security_settings_face_profile_preference_title));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mLockscreenController = Utils.isMultipleBiometricsSupported(context)
|
||||||
|
? use(BiometricLockscreenBypassPreferenceController.class)
|
||||||
|
: use(FaceSettingsLockscreenBypassPreferenceController.class);
|
||||||
|
mLockscreenController.setUserId(mUserId);
|
||||||
|
|
||||||
Preference keyguardPref = findPreference(FaceSettingsKeyguardPreferenceController.KEY);
|
Preference keyguardPref = findPreference(FaceSettingsKeyguardPreferenceController.KEY);
|
||||||
Preference appPref = findPreference(FaceSettingsAppPreferenceController.KEY);
|
Preference appPref = findPreference(FaceSettingsAppPreferenceController.KEY);
|
||||||
Preference attentionPref = findPreference(FaceSettingsAttentionPreferenceController.KEY);
|
Preference attentionPref = findPreference(FaceSettingsAttentionPreferenceController.KEY);
|
||||||
@@ -195,14 +200,6 @@ public class FaceSettings extends DashboardFragment {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onAttach(Context context) {
|
|
||||||
super.onAttach(context);
|
|
||||||
|
|
||||||
mLockscreenController = use(FaceSettingsLockscreenBypassPreferenceController.class);
|
|
||||||
mLockscreenController.setUserId(mUserId);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
|
@@ -56,13 +56,13 @@ public class FaceSettingsLockscreenBypassPreferenceController
|
|||||||
int defaultValue = mContext.getResources().getBoolean(
|
int defaultValue = mContext.getResources().getBoolean(
|
||||||
com.android.internal.R.bool.config_faceAuthDismissesKeyguard) ? 1 : 0;
|
com.android.internal.R.bool.config_faceAuthDismissesKeyguard) ? 1 : 0;
|
||||||
return Settings.Secure.getIntForUser(mContext.getContentResolver(),
|
return Settings.Secure.getIntForUser(mContext.getContentResolver(),
|
||||||
Settings.Secure.FACE_UNLOCK_DISMISSES_KEYGUARD, defaultValue, getUserId()) != 0;
|
Settings.Secure.FACE_UNLOCK_DISMISSES_KEYGUARD, defaultValue, getUserHandle()) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setChecked(boolean isChecked) {
|
public boolean setChecked(boolean isChecked) {
|
||||||
Settings.Secure.putInt(mContext.getContentResolver(),
|
Settings.Secure.putIntForUser(mContext.getContentResolver(),
|
||||||
Settings.Secure.FACE_UNLOCK_DISMISSES_KEYGUARD, isChecked ? 1 : 0);
|
Settings.Secure.FACE_UNLOCK_DISMISSES_KEYGUARD, isChecked ? 1 : 0, getUserHandle());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -88,7 +88,7 @@ public class FaceSettingsLockscreenBypassPreferenceController
|
|||||||
if (Utils.isMultipleBiometricsSupported(mContext)) {
|
if (Utils.isMultipleBiometricsSupported(mContext)) {
|
||||||
return UNSUPPORTED_ON_DEVICE;
|
return UNSUPPORTED_ON_DEVICE;
|
||||||
}
|
}
|
||||||
if (mUserManager.isManagedProfile(UserHandle.myUserId())) {
|
if (mUserManager.isManagedProfile(getUserId())) {
|
||||||
return UNSUPPORTED_ON_DEVICE;
|
return UNSUPPORTED_ON_DEVICE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,4 +99,8 @@ public class FaceSettingsLockscreenBypassPreferenceController
|
|||||||
return UNSUPPORTED_ON_DEVICE;
|
return UNSUPPORTED_ON_DEVICE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int getUserHandle() {
|
||||||
|
return UserHandle.of(getUserId()).getIdentifier();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user