Offer a null FignerprintManager.

Settings likes null.

Test: builds
Bug: 32060380
Change-Id: I5ba19bccfd48916d4e581518928a6aee19e84a77
This commit is contained in:
Jeff Sharkey
2016-10-11 14:25:22 -06:00
parent b2cca091c9
commit ab50807d1e
11 changed files with 30 additions and 18 deletions

View File

@@ -142,8 +142,7 @@ public class ChooseLockGeneric extends SettingsActivity {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
String chooseLockAction = getActivity().getIntent().getAction(); String chooseLockAction = getActivity().getIntent().getAction();
mFingerprintManager = mFingerprintManager = Utils.getFingerprintManagerOrNull(getActivity());
(FingerprintManager) getActivity().getSystemService(Context.FINGERPRINT_SERVICE);
mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
mKeyStore = KeyStore.getInstance(); mKeyStore = KeyStore.getInstance();
mChooseLockSettingsHelper = new ChooseLockSettingsHelper(this.getActivity()); mChooseLockSettingsHelper = new ChooseLockSettingsHelper(this.getActivity());

View File

@@ -904,8 +904,7 @@ public class SecuritySettings extends SettingsPreferenceFragment
} }
// Fingerprint // Fingerprint
FingerprintManager fpm = final FingerprintManager fpm = Utils.getFingerprintManagerOrNull(context);
(FingerprintManager) context.getSystemService(Context.FINGERPRINT_SERVICE);
if (fpm != null && fpm.isHardwareDetected()) { if (fpm != null && fpm.isHardwareDetected()) {
// This catches the title which can be overloaded in an overlay // This catches the title which can be overloaded in an overlay
data = new SearchIndexableRaw(context); data = new SearchIndexableRaw(context);

View File

@@ -44,6 +44,7 @@ import android.content.res.TypedArray;
import android.database.Cursor; import android.database.Cursor;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.BitmapFactory; import android.graphics.BitmapFactory;
import android.hardware.fingerprint.FingerprintManager;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.LinkProperties; import android.net.LinkProperties;
import android.net.Uri; import android.net.Uri;
@@ -1175,4 +1176,12 @@ public final class Utils extends com.android.settingslib.Utils {
} }
return null; return null;
} }
public static FingerprintManager getFingerprintManagerOrNull(Context context) {
if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) {
return context.getSystemService(FingerprintManager.class);
} else {
return null;
}
}
} }

View File

@@ -35,6 +35,7 @@ import com.android.settings.Settings.FingerprintSuggestionActivity;
import com.android.settings.Settings.ScreenLockSuggestionActivity; import com.android.settings.Settings.ScreenLockSuggestionActivity;
import com.android.settings.Settings.WifiCallingSuggestionActivity; import com.android.settings.Settings.WifiCallingSuggestionActivity;
import com.android.settings.Settings.ZenModeAutomationSuggestionActivity; import com.android.settings.Settings.ZenModeAutomationSuggestionActivity;
import com.android.settings.Utils;
import com.android.settings.WallpaperSuggestionActivity; import com.android.settings.WallpaperSuggestionActivity;
import com.android.settingslib.drawer.Tile; import com.android.settingslib.drawer.Tile;
@@ -75,7 +76,7 @@ public class SuggestionsChecks {
} }
private boolean isNotSingleFingerprintEnrolled() { private boolean isNotSingleFingerprintEnrolled() {
FingerprintManager manager = mContext.getSystemService(FingerprintManager.class); FingerprintManager manager = Utils.getFingerprintManagerOrNull(mContext);
return manager == null || manager.getEnrolledFingerprints().size() != 1; return manager == null || manager.getEnrolledFingerprints().size() != 1;
} }

View File

@@ -24,6 +24,7 @@ import android.os.UserHandle;
import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.ChooseLockSettingsHelper; import com.android.settings.ChooseLockSettingsHelper;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.fingerprint.FingerprintEnrollSidecar.Listener; import com.android.settings.fingerprint.FingerprintEnrollSidecar.Listener;
/** /**
@@ -155,7 +156,7 @@ public class FingerprintEnrollFindSensor extends FingerprintEnrollBase {
setResult(RESULT_TIMEOUT); setResult(RESULT_TIMEOUT);
finish(); finish();
} else { } else {
FingerprintManager fpm = getSystemService(FingerprintManager.class); FingerprintManager fpm = Utils.getFingerprintManagerOrNull(this);
int enrolled = fpm.getEnrolledFingerprints().size(); int enrolled = fpm.getEnrolledFingerprints().size();
int max = getResources().getInteger( int max = getResources().getInteger(
com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser); com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser);
@@ -172,7 +173,7 @@ public class FingerprintEnrollFindSensor extends FingerprintEnrollBase {
} }
private void launchConfirmLock() { private void launchConfirmLock() {
long challenge = getSystemService(FingerprintManager.class).preEnroll(); long challenge = Utils.getFingerprintManagerOrNull(this).preEnroll();
ChooseLockSettingsHelper helper = new ChooseLockSettingsHelper(this); ChooseLockSettingsHelper helper = new ChooseLockSettingsHelper(this);
boolean launchedConfirmationActivity = false; boolean launchedConfirmationActivity = false;
if (mUserId == UserHandle.USER_NULL) { if (mUserId == UserHandle.USER_NULL) {

View File

@@ -16,16 +16,16 @@
package com.android.settings.fingerprint; package com.android.settings.fingerprint;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager;
import android.hardware.fingerprint.FingerprintManager; import android.hardware.fingerprint.FingerprintManager;
import android.os.Bundle; import android.os.Bundle;
import android.os.UserHandle;
import android.view.View; import android.view.View;
import android.widget.Button; import android.widget.Button;
import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.Utils;
/** /**
* Activity which concludes fingerprint enrollment. * Activity which concludes fingerprint enrollment.
@@ -39,7 +39,7 @@ public class FingerprintEnrollFinish extends FingerprintEnrollBase {
setHeaderText(R.string.security_settings_fingerprint_enroll_finish_title); setHeaderText(R.string.security_settings_fingerprint_enroll_finish_title);
Button addButton = (Button) findViewById(R.id.add_another_button); 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 enrolled = fpm.getEnrolledFingerprints(mUserId).size();
int max = getResources().getInteger( int max = getResources().getInteger(
com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser); com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser);

View File

@@ -32,6 +32,7 @@ import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.ChooseLockGeneric; import com.android.settings.ChooseLockGeneric;
import com.android.settings.ChooseLockSettingsHelper; import com.android.settings.ChooseLockSettingsHelper;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settingslib.HelpUtils; import com.android.settingslib.HelpUtils;
import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedLockUtils;
import com.android.setupwizardlib.span.LinkSpan; import com.android.setupwizardlib.span.LinkSpan;
@@ -97,7 +98,7 @@ public class FingerprintEnrollIntroduction extends FingerprintEnrollBase
private void launchChooseLock() { private void launchChooseLock() {
Intent intent = getChooseLockIntent(); Intent intent = getChooseLockIntent();
long challenge = getSystemService(FingerprintManager.class).preEnroll(); long challenge = Utils.getFingerprintManagerOrNull(this).preEnroll();
intent.putExtra(ChooseLockGeneric.ChooseLockGenericFragment.MINIMUM_QUALITY_KEY, intent.putExtra(ChooseLockGeneric.ChooseLockGenericFragment.MINIMUM_QUALITY_KEY,
DevicePolicyManager.PASSWORD_QUALITY_SOMETHING); DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
intent.putExtra(ChooseLockGeneric.ChooseLockGenericFragment.HIDE_DISABLED_PREFS, true); intent.putExtra(ChooseLockGeneric.ChooseLockGenericFragment.HIDE_DISABLED_PREFS, true);

View File

@@ -27,6 +27,7 @@ import android.os.UserHandle;
import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.ChooseLockSettingsHelper; import com.android.settings.ChooseLockSettingsHelper;
import com.android.settings.Utils;
import com.android.settings.core.InstrumentedFragment; import com.android.settings.core.InstrumentedFragment;
/** /**
@@ -54,7 +55,7 @@ public class FingerprintEnrollSidecar extends InstrumentedFragment {
@Override @Override
public void onAttach(Activity activity) { public void onAttach(Activity activity) {
super.onAttach(activity); super.onAttach(activity);
mFingerprintManager = activity.getSystemService(FingerprintManager.class); mFingerprintManager = Utils.getFingerprintManagerOrNull(activity);
mToken = activity.getIntent().getByteArrayExtra( mToken = activity.getIntent().getByteArrayExtra(
ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN); ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN);
mUserId = activity.getIntent().getIntExtra(Intent.EXTRA_USER_ID, UserHandle.USER_NULL); mUserId = activity.getIntent().getIntExtra(Intent.EXTRA_USER_ID, UserHandle.USER_NULL);

View File

@@ -26,6 +26,7 @@ import android.content.ActivityNotFoundException;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Typeface; import android.graphics.Typeface;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.hardware.fingerprint.Fingerprint; import android.hardware.fingerprint.Fingerprint;
@@ -290,8 +291,7 @@ public class FingerprintSettings extends SubSettings {
Intent.EXTRA_USER_ID, UserHandle.myUserId()); Intent.EXTRA_USER_ID, UserHandle.myUserId());
Activity activity = getActivity(); Activity activity = getActivity();
mFingerprintManager = (FingerprintManager) activity.getSystemService( mFingerprintManager = Utils.getFingerprintManagerOrNull(activity);
Context.FINGERPRINT_SERVICE);
// Need to authenticate a session token if none // Need to authenticate a session token if none
if (mToken == null && mLaunchedConfirm == false) { if (mToken == null && mLaunchedConfirm == false) {
@@ -820,8 +820,7 @@ public class FingerprintSettings extends SubSettings {
} }
public static Preference getFingerprintPreferenceForUser(Context context, final int userId) { public static Preference getFingerprintPreferenceForUser(Context context, final int userId) {
FingerprintManager fpm = (FingerprintManager) context.getSystemService( final FingerprintManager fpm = Utils.getFingerprintManagerOrNull(context);
Context.FINGERPRINT_SERVICE);
if (fpm == null || !fpm.isHardwareDetected()) { if (fpm == null || !fpm.isHardwareDetected()) {
Log.v(TAG, "No fingerprint hardware detected!!"); Log.v(TAG, "No fingerprint hardware detected!!");
return null; return null;

View File

@@ -23,6 +23,7 @@ import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.Utils;
/** /**
* Small helper class to manage text/icon around fingerprint authentication UI. * 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, public FingerprintUiHelper(ImageView icon, TextView errorTextView, Callback callback,
int userId) { int userId) {
mFingerprintManager = icon.getContext().getSystemService(FingerprintManager.class); mFingerprintManager = Utils.getFingerprintManagerOrNull(icon.getContext());
mIcon = icon; mIcon = icon;
mErrorTextView = errorTextView; mErrorTextView = errorTextView;
mCallback = callback; mCallback = callback;

View File

@@ -30,6 +30,7 @@ import android.os.UserHandle;
import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.ChooseLockGeneric; import com.android.settings.ChooseLockGeneric;
import com.android.settings.ChooseLockSettingsHelper; import com.android.settings.ChooseLockSettingsHelper;
import com.android.settings.Utils;
/** /**
* Business logic for {@link SetNewPasswordActivity}. * Business logic for {@link SetNewPasswordActivity}.
@@ -54,7 +55,7 @@ final class SetNewPasswordController {
public SetNewPasswordController(Context context, Ui ui) { public SetNewPasswordController(Context context, Ui ui) {
this(context.getUserId(), this(context.getUserId(),
context.getPackageManager(), context.getPackageManager(),
(FingerprintManager) context.getSystemService(Context.FINGERPRINT_SERVICE), Utils.getFingerprintManagerOrNull(context),
(DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE), (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE),
ui); ui);
} }