Fix issues in FP Settings

- A crash in FP settings due to a null activity
- FP settings launching confirm credentials twice on rotation

Change-Id: Ie8c743a14e2a2f1adbdcf7693687fa66663c105d
This commit is contained in:
Andres Morales
2015-04-15 17:45:30 -07:00
parent dbcfa01835
commit 887c90d8af

View File

@@ -92,6 +92,7 @@ public class FingerprintSettings extends SettingsActivity {
private static final String KEY_MANAGE_CATEGORY = "fingerprint_manage_category"; private static final String KEY_MANAGE_CATEGORY = "fingerprint_manage_category";
private static final String KEY_FINGERPRINT_ENABLE_KEYGUARD_TOGGLE = private static final String KEY_FINGERPRINT_ENABLE_KEYGUARD_TOGGLE =
"fingerprint_enable_keyguard_toggle"; "fingerprint_enable_keyguard_toggle";
private static final String KEY_LAUNCHED_CONFIRM = "launched_confirm";
private static final int MSG_REFRESH_FINGERPRINT_TEMPLATES = 1000; private static final int MSG_REFRESH_FINGERPRINT_TEMPLATES = 1000;
private static final int MSG_HIGHLIGHT_FINGERPRINT_ITEM = 1001; private static final int MSG_HIGHLIGHT_FINGERPRINT_ITEM = 1001;
@@ -110,6 +111,7 @@ public class FingerprintSettings extends SettingsActivity {
private CancellationSignal mFingerprintCancel; private CancellationSignal mFingerprintCancel;
private int mMaxFingerprintAttempts; private int mMaxFingerprintAttempts;
private byte[] mToken; private byte[] mToken;
private boolean mLaunchedConfirm;
private AuthenticationCallback mAuthCallback = new AuthenticationCallback() { private AuthenticationCallback mAuthCallback = new AuthenticationCallback() {
@Override @Override
@@ -125,9 +127,12 @@ public class FingerprintSettings extends SettingsActivity {
@Override @Override
public void onAuthenticationError(int errMsgId, CharSequence errString) { public void onAuthenticationError(int errMsgId, CharSequence errString) {
Toast.makeText(getActivity(), errString, Toast.LENGTH_SHORT); // get activity will be null on a screen rotation
if (errMsgId != FingerprintManager.FINGERPRINT_ERROR_CANCELED) { if (getActivity() != null) {
retryFingerprint(false); Toast.makeText(getActivity(), errString, Toast.LENGTH_SHORT);
if (errMsgId != FingerprintManager.FINGERPRINT_ERROR_CANCELED) {
retryFingerprint(false);
}
} }
} }
@@ -191,13 +196,16 @@ public class FingerprintSettings extends SettingsActivity {
if (savedInstanceState != null) { if (savedInstanceState != null) {
mToken = savedInstanceState.getByteArray( mToken = savedInstanceState.getByteArray(
ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN); ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN);
mLaunchedConfirm = savedInstanceState.getBoolean(
KEY_LAUNCHED_CONFIRM, false);
} }
mFingerprintManager = (FingerprintManager) getActivity().getSystemService( mFingerprintManager = (FingerprintManager) getActivity().getSystemService(
Context.FINGERPRINT_SERVICE); Context.FINGERPRINT_SERVICE);
// Need to authenticate a session token if none // Need to authenticate a session token if none
if (mToken == null) { if (mToken == null && mLaunchedConfirm == false) {
mLaunchedConfirm = true;
launchChooseOrConfirmLock(); launchChooseOrConfirmLock();
} }
} }
@@ -307,6 +315,7 @@ public class FingerprintSettings extends SettingsActivity {
public void onSaveInstanceState(final Bundle outState) { public void onSaveInstanceState(final Bundle outState) {
outState.putByteArray(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, outState.putByteArray(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN,
mToken); mToken);
outState.putBoolean(KEY_LAUNCHED_CONFIRM, mLaunchedConfirm);
} }
@Override @Override