Files
app_Settings/src/com/android/settings/privatespace/onelock/PrivateSpaceFacePreferenceController.java
josephpv 1741f5355a In Private space settings when no face support show only fingerprint unlock
This contains fix for PS biometrics issue in Pixel devices without
face hardware support.

In private space separate lock settings page
- without face support only fingerprint unlock controller is shown
- with face support controller for both face and fingerprint is shown.

Screenshot:
-Without Face support
go/ss/qhDqdyqYLCTYaJq.png
go/ss/4Jw54XKJPNYm4R6.png
go/ss/5LPjRQ76cVPZy7j.png

-if without Fingerprint
go/ss/ACGqKU7j24G3Q9Q.png

-With Face support
go/ss/7jV385WCFsXajZM.png
go/ss/ZrGTdiYUN5MFY3r.png
go/ss/6QNKqaFuZvuMJZ9.png
go/ss/9ZcSvXULHuPK2ps.png
go/ss/7GfABcYE4h8BkCo.png

Bug: 319794904
Test: Manual
Change-Id: I053e8584d036ca0d6e3d8157d0fdef6d465492aa
2024-01-12 19:10:46 +00:00

92 lines
3.2 KiB
Java

/*
* Copyright (C) 2023 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.privatespace.onelock;
import android.content.Context;
import android.os.UserHandle;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.lifecycle.Lifecycle;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.biometrics.combination.BiometricFaceStatusPreferenceController;
import com.android.settings.privatespace.PrivateSpaceMaintainer;
public class PrivateSpaceFacePreferenceController extends BiometricFaceStatusPreferenceController {
private static final String TAG = "PrivateSpaceFaceCtrl";
public PrivateSpaceFacePreferenceController(Context context, String key) {
super(context, key);
}
public PrivateSpaceFacePreferenceController(Context context, String key, Lifecycle lifecycle) {
super(context, key, lifecycle);
}
@Override
protected boolean isUserSupported() {
return android.os.Flags.allowPrivateProfile()
&& android.multiuser.Flags.enableBiometricsToUnlockPrivateSpace()
&& getUserId() != UserHandle.USER_NULL;
}
@Override
protected int getUserId() {
UserHandle privateProfileHandle =
PrivateSpaceMaintainer.getInstance(mContext).getPrivateProfileHandle();
if (privateProfileHandle != null) {
return privateProfileHandle.getIdentifier();
} else {
Log.e(TAG, "Private profile user handle is not expected to be null.");
}
return UserHandle.USER_NULL;
}
@Override
public int getAvailabilityStatus() {
return android.os.Flags.allowPrivateProfile()
&& android.multiuser.Flags.enableBiometricsToUnlockPrivateSpace()
? AVAILABLE
: UNSUPPORTED_ON_DEVICE;
}
@Override
public void updateState(@NonNull Preference preference) {
if (mLockPatternUtils.isSeparateProfileChallengeEnabled(getUserId())) {
super.updateState(preference);
preference.setEnabled(true);
} else {
preference.setSummary(
mContext.getString(R.string.lock_settings_profile_unified_summary));
preference.setEnabled(false);
}
}
@Override
public void displayPreference(@NonNull PreferenceScreen screen) {
super.displayPreference(screen);
Preference preference = screen.findPreference(getPreferenceKey());
if (!Utils.isMultipleBiometricsSupported(mContext)) {
preference.setTitle(R.string.private_space_face_title);
}
}
}