Offer a null FignerprintManager.

Settings likes null.

Test: builds
Bug: 32060380
Change-Id: I5ba19bccfd48916d4e581518928a6aee19e84a77
(cherry picked from commit ab50807d1edacb4fca5447525bb5270a853eaafc)
diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java
index a9e48dc..9349c13 100644
--- a/src/com/android/settings/ChooseLockGeneric.java
+++ b/src/com/android/settings/ChooseLockGeneric.java
@@ -142,8 +142,7 @@
             super.onCreate(savedInstanceState);
 
             String chooseLockAction = getActivity().getIntent().getAction();
-            mFingerprintManager =
-                (FingerprintManager) getActivity().getSystemService(Context.FINGERPRINT_SERVICE);
+            mFingerprintManager = Utils.getFingerprintManagerOrNull(getActivity());
             mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
             mKeyStore = KeyStore.getInstance();
             mChooseLockSettingsHelper = new ChooseLockSettingsHelper(this.getActivity());
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index 9af91cc..5f90353 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -904,8 +904,7 @@
             }
 
             // Fingerprint
-            FingerprintManager fpm =
-                    (FingerprintManager) context.getSystemService(Context.FINGERPRINT_SERVICE);
+            final FingerprintManager fpm = Utils.getFingerprintManagerOrNull(context);
             if (fpm != null && fpm.isHardwareDetected()) {
                 // This catches the title which can be overloaded in an overlay
                 data = new SearchIndexableRaw(context);
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index 1186c46..f8520d8 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -44,6 +44,7 @@
 import android.database.Cursor;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
+import android.hardware.fingerprint.FingerprintManager;
 import android.net.ConnectivityManager;
 import android.net.LinkProperties;
 import android.net.Uri;
@@ -1175,4 +1176,12 @@
         }
         return null;
     }
+
+    public static FingerprintManager getFingerprintManagerOrNull(Context context) {
+        if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) {
+            return context.getSystemService(FingerprintManager.class);
+        } else {
+            return null;
+        }
+    }
 }
diff --git a/src/com/android/settings/dashboard/SuggestionsChecks.java b/src/com/android/settings/dashboard/SuggestionsChecks.java
index b816a79..78f21ea 100644
--- a/src/com/android/settings/dashboard/SuggestionsChecks.java
+++ b/src/com/android/settings/dashboard/SuggestionsChecks.java
@@ -35,6 +35,7 @@
 import com.android.settings.Settings.ScreenLockSuggestionActivity;
 import com.android.settings.Settings.WifiCallingSuggestionActivity;
 import com.android.settings.Settings.ZenModeAutomationSuggestionActivity;
+import com.android.settings.Utils;
 import com.android.settings.WallpaperSuggestionActivity;
 import com.android.settingslib.drawer.Tile;
 
@@ -75,7 +76,7 @@
     }
 
     private boolean isNotSingleFingerprintEnrolled() {
-        FingerprintManager manager = mContext.getSystemService(FingerprintManager.class);
+        FingerprintManager manager = Utils.getFingerprintManagerOrNull(mContext);
         return manager == null || manager.getEnrolledFingerprints().size() != 1;
     }
 
diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java b/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java
index 33768c5..f2fda6b 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java
@@ -24,6 +24,7 @@
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.ChooseLockSettingsHelper;
 import com.android.settings.R;
+import com.android.settings.Utils;
 import com.android.settings.fingerprint.FingerprintEnrollSidecar.Listener;
 
 /**
@@ -155,7 +156,7 @@
                 setResult(RESULT_TIMEOUT);
                 finish();
             } else {
-                FingerprintManager fpm = getSystemService(FingerprintManager.class);
+                FingerprintManager fpm = Utils.getFingerprintManagerOrNull(this);
                 int enrolled = fpm.getEnrolledFingerprints().size();
                 int max = getResources().getInteger(
                         com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser);
@@ -172,7 +173,7 @@
     }
 
     private void launchConfirmLock() {
-        long challenge = getSystemService(FingerprintManager.class).preEnroll();
+        long challenge = Utils.getFingerprintManagerOrNull(this).preEnroll();
         ChooseLockSettingsHelper helper = new ChooseLockSettingsHelper(this);
         boolean launchedConfirmationActivity = false;
         if (mUserId == UserHandle.USER_NULL) {
diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollFinish.java b/src/com/android/settings/fingerprint/FingerprintEnrollFinish.java
index 75557a0..94d2570 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollFinish.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollFinish.java
@@ -16,16 +16,16 @@
 
 package com.android.settings.fingerprint;
 
-import android.content.Context;
 import android.content.Intent;
+import android.content.pm.PackageManager;
 import android.hardware.fingerprint.FingerprintManager;
 import android.os.Bundle;
-import android.os.UserHandle;
 import android.view.View;
 import android.widget.Button;
 
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.R;
+import com.android.settings.Utils;
 
 /**
  * Activity which concludes fingerprint enrollment.
@@ -39,7 +39,7 @@
         setHeaderText(R.string.security_settings_fingerprint_enroll_finish_title);
         Button addButton = (Button) findViewById(R.id.add_another_button);
 
-        FingerprintManager fpm = (FingerprintManager) getSystemService(Context.FINGERPRINT_SERVICE);
+        final FingerprintManager fpm = Utils.getFingerprintManagerOrNull(this);
         int enrolled = fpm.getEnrolledFingerprints(mUserId).size();
         int max = getResources().getInteger(
                 com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser);
diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java b/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java
index b5be4b6..697c44a 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java
@@ -32,6 +32,7 @@
 import com.android.settings.ChooseLockGeneric;
 import com.android.settings.ChooseLockSettingsHelper;
 import com.android.settings.R;
+import com.android.settings.Utils;
 import com.android.settingslib.HelpUtils;
 import com.android.settingslib.RestrictedLockUtils;
 import com.android.setupwizardlib.span.LinkSpan;
@@ -97,7 +98,7 @@
 
     private void launchChooseLock() {
         Intent intent = getChooseLockIntent();
-        long challenge = getSystemService(FingerprintManager.class).preEnroll();
+        long challenge = Utils.getFingerprintManagerOrNull(this).preEnroll();
         intent.putExtra(ChooseLockGeneric.ChooseLockGenericFragment.MINIMUM_QUALITY_KEY,
                 DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
         intent.putExtra(ChooseLockGeneric.ChooseLockGenericFragment.HIDE_DISABLED_PREFS, true);
diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java b/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java
index 9b574b6..24061b4 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java
@@ -27,6 +27,7 @@
 
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.ChooseLockSettingsHelper;
+import com.android.settings.Utils;
 import com.android.settings.core.InstrumentedFragment;
 
 /**
@@ -54,7 +55,7 @@
     @Override
     public void onAttach(Activity activity) {
         super.onAttach(activity);
-        mFingerprintManager = activity.getSystemService(FingerprintManager.class);
+        mFingerprintManager = Utils.getFingerprintManagerOrNull(activity);
         mToken = activity.getIntent().getByteArrayExtra(
                 ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN);
         mUserId = activity.getIntent().getIntExtra(Intent.EXTRA_USER_ID, UserHandle.USER_NULL);
diff --git a/src/com/android/settings/fingerprint/FingerprintSettings.java b/src/com/android/settings/fingerprint/FingerprintSettings.java
index b044ce3..3c1be40 100644
--- a/src/com/android/settings/fingerprint/FingerprintSettings.java
+++ b/src/com/android/settings/fingerprint/FingerprintSettings.java
@@ -26,6 +26,7 @@
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
+import android.content.pm.PackageManager;
 import android.graphics.Typeface;
 import android.graphics.drawable.Drawable;
 import android.hardware.fingerprint.Fingerprint;
@@ -290,8 +291,7 @@
                     Intent.EXTRA_USER_ID, UserHandle.myUserId());
 
             Activity activity = getActivity();
-            mFingerprintManager = (FingerprintManager) activity.getSystemService(
-                    Context.FINGERPRINT_SERVICE);
+            mFingerprintManager = Utils.getFingerprintManagerOrNull(activity);
 
             // Need to authenticate a session token if none
             if (mToken == null && mLaunchedConfirm == false) {
@@ -820,8 +820,7 @@
     }
 
     public static Preference getFingerprintPreferenceForUser(Context context, final int userId) {
-        FingerprintManager fpm = (FingerprintManager) context.getSystemService(
-                Context.FINGERPRINT_SERVICE);
+        final FingerprintManager fpm = Utils.getFingerprintManagerOrNull(context);
         if (fpm == null || !fpm.isHardwareDetected()) {
             Log.v(TAG, "No fingerprint hardware detected!!");
             return null;
diff --git a/src/com/android/settings/fingerprint/FingerprintUiHelper.java b/src/com/android/settings/fingerprint/FingerprintUiHelper.java
index f7ec97b..655ce26 100644
--- a/src/com/android/settings/fingerprint/FingerprintUiHelper.java
+++ b/src/com/android/settings/fingerprint/FingerprintUiHelper.java
@@ -23,6 +23,7 @@
 import android.widget.TextView;
 
 import com.android.settings.R;
+import com.android.settings.Utils;
 
 /**
  * Small helper class to manage text/icon around fingerprint authentication UI.
@@ -41,7 +42,7 @@
 
     public FingerprintUiHelper(ImageView icon, TextView errorTextView, Callback callback,
             int userId) {
-        mFingerprintManager = icon.getContext().getSystemService(FingerprintManager.class);
+        mFingerprintManager = Utils.getFingerprintManagerOrNull(icon.getContext());
         mIcon = icon;
         mErrorTextView = errorTextView;
         mCallback = callback;
diff --git a/src/com/android/settings/password/SetNewPasswordController.java b/src/com/android/settings/password/SetNewPasswordController.java
index 470723b..03afa76 100644
--- a/src/com/android/settings/password/SetNewPasswordController.java
+++ b/src/com/android/settings/password/SetNewPasswordController.java
@@ -30,6 +30,7 @@
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.settings.ChooseLockGeneric;
 import com.android.settings.ChooseLockSettingsHelper;
+import com.android.settings.Utils;
 
 /**
  * Business logic for {@link SetNewPasswordActivity}.
@@ -54,7 +55,7 @@
     public SetNewPasswordController(Context context, Ui ui) {
         this(context.getUserId(),
                 context.getPackageManager(),
-                (FingerprintManager) context.getSystemService(Context.FINGERPRINT_SERVICE),
+                Utils.getFingerprintManagerOrNull(context),
                 (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE),
                 ui);
     }