diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java index a9e48dc56d5..9349c13d297 100644 --- a/src/com/android/settings/ChooseLockGeneric.java +++ b/src/com/android/settings/ChooseLockGeneric.java @@ -142,8 +142,7 @@ public class ChooseLockGeneric extends SettingsActivity { 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 9af91ccbf87..5f90353b9c9 100644 --- a/src/com/android/settings/SecuritySettings.java +++ b/src/com/android/settings/SecuritySettings.java @@ -904,8 +904,7 @@ public class SecuritySettings extends SettingsPreferenceFragment } // 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 1186c4605fd..f8520d8422c 100644 --- a/src/com/android/settings/Utils.java +++ b/src/com/android/settings/Utils.java @@ -44,6 +44,7 @@ import android.content.res.TypedArray; 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 @@ public final class Utils extends com.android.settingslib.Utils { } 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 b816a79a202..78f21ea0cf0 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.FingerprintSuggestionActivity; 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 @@ public class SuggestionsChecks { } 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 33768c50d28..f2fda6b249a 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java +++ b/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java @@ -24,6 +24,7 @@ import android.os.UserHandle; 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 @@ public class FingerprintEnrollFindSensor extends FingerprintEnrollBase { 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 @@ public class FingerprintEnrollFindSensor extends FingerprintEnrollBase { } 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 75557a0f8db..94d257087b0 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 @@ public class FingerprintEnrollFinish extends FingerprintEnrollBase { 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 b5be4b61788..697c44a83a0 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java +++ b/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java @@ -32,6 +32,7 @@ import com.android.internal.logging.MetricsProto.MetricsEvent; 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 @@ public class FingerprintEnrollIntroduction extends FingerprintEnrollBase 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 9b574b6d07a..24061b458bb 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java +++ b/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java @@ -27,6 +27,7 @@ import android.os.UserHandle; 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 @@ public class FingerprintEnrollSidecar extends InstrumentedFragment { @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 b044ce3989a..3c1be40d9ab 100644 --- a/src/com/android/settings/fingerprint/FingerprintSettings.java +++ b/src/com/android/settings/fingerprint/FingerprintSettings.java @@ -26,6 +26,7 @@ import android.content.ActivityNotFoundException; 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 @@ public class FingerprintSettings extends SubSettings { 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 class FingerprintSettings extends SubSettings { } 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 f7ec97b1678..655ce2682f5 100644 --- a/src/com/android/settings/fingerprint/FingerprintUiHelper.java +++ b/src/com/android/settings/fingerprint/FingerprintUiHelper.java @@ -23,6 +23,7 @@ import android.widget.ImageView; 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 class FingerprintUiHelper extends FingerprintManager.AuthenticationCallba 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 470723b12f8..03afa762ee9 100644 --- a/src/com/android/settings/password/SetNewPasswordController.java +++ b/src/com/android/settings/password/SetNewPasswordController.java @@ -30,6 +30,7 @@ import android.os.UserHandle; 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 @@ final class SetNewPasswordController { 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); }