Fingerprint swipe settings and suggestions should not show if hardware unavailable

Fixes: 63589121

Test: remove FP driver, make sure swipe setting and suggestions
don't show anymore && make -j RunSettingsRoboTests

Merged-In: I2539128daff8df52d040606141f772fc9edffa57
Change-Id: I2539128daff8df52d040606141f772fc9edffa57
This commit is contained in:
Kevin Chyn
2017-07-20 00:15:44 -07:00
parent 6666bf5605
commit 2a2dcb52cb
6 changed files with 115 additions and 25 deletions

View File

@@ -1253,6 +1253,11 @@ public final class Utils extends com.android.settingslib.Utils {
}
}
public static boolean hasFingerprintHardware(Context context) {
FingerprintManager fingerprintManager = getFingerprintManagerOrNull(context);
return fingerprintManager != null && fingerprintManager.isHardwareDetected();
}
/**
* Launches an intent which may optionally have a user id defined.
* @param fragment Fragment to use to launch the activity.

View File

@@ -65,12 +65,14 @@ public class SuggestionsChecks {
} else if (className.equals(WifiCallingSuggestionActivity.class.getName())) {
return isWifiCallingUnavailableOrEnabled();
} else if (className.equals(FingerprintSuggestionActivity.class.getName())) {
return isNotSingleFingerprintEnrolled() || !isFingerprintEnabled();
return !Utils.hasFingerprintHardware(mContext) || !isFingerprintEnabled()
|| isNotSingleFingerprintEnrolled();
} else if (className.equals(ScreenLockSuggestionActivity.class.getName())) {
return isDeviceSecured();
} else if (className.equals(FingerprintEnrollSuggestionActivity.class.getName())) {
FingerprintManager manager = Utils.getFingerprintManagerOrNull(mContext);
if (manager == null || !isFingerprintEnabled()) {
final FingerprintManager manager = Utils.getFingerprintManagerOrNull(mContext);
if (manager == null || !isFingerprintEnabled()
|| !Utils.hasFingerprintHardware(mContext)) {
return true;
}
return manager.hasEnrolledFingerprints();

View File

@@ -23,7 +23,7 @@ import android.provider.Settings;
import android.support.v7.preference.Preference;
import com.android.settings.R;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.Utils;
import com.android.settings.search.DatabaseIndexingUtils;
import com.android.settings.search.InlineSwitchPayload;
import com.android.settings.search.ResultPayload;
@@ -50,7 +50,7 @@ public class SwipeToNotificationPreferenceController extends GesturePreferenceCo
}
private static boolean isGestureAvailable(Context context) {
return context.getResources()
return Utils.hasFingerprintHardware(context) && context.getResources()
.getBoolean(com.android.internal.R.bool.config_supportSystemNavigationKeys);
}