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
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index 43106cf..2b2ca8c 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -1253,6 +1253,11 @@
}
}
+ 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.
diff --git a/src/com/android/settings/dashboard/suggestions/SuggestionsChecks.java b/src/com/android/settings/dashboard/suggestions/SuggestionsChecks.java
index 3e85d2c..6ff0413 100644
--- a/src/com/android/settings/dashboard/suggestions/SuggestionsChecks.java
+++ b/src/com/android/settings/dashboard/suggestions/SuggestionsChecks.java
@@ -65,12 +65,14 @@
} 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();
diff --git a/src/com/android/settings/gestures/SwipeToNotificationPreferenceController.java b/src/com/android/settings/gestures/SwipeToNotificationPreferenceController.java
index bb63f21..6935cce 100644
--- a/src/com/android/settings/gestures/SwipeToNotificationPreferenceController.java
+++ b/src/com/android/settings/gestures/SwipeToNotificationPreferenceController.java
@@ -23,7 +23,7 @@
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 @@
}
private static boolean isGestureAvailable(Context context) {
- return context.getResources()
+ return Utils.hasFingerprintHardware(context) && context.getResources()
.getBoolean(com.android.internal.R.bool.config_supportSystemNavigationKeys);
}