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:
@@ -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,11 +127,14 @@ public class FingerprintSettings extends SettingsActivity {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAuthenticationError(int errMsgId, CharSequence errString) {
|
public void onAuthenticationError(int errMsgId, CharSequence errString) {
|
||||||
|
// get activity will be null on a screen rotation
|
||||||
|
if (getActivity() != null) {
|
||||||
Toast.makeText(getActivity(), errString, Toast.LENGTH_SHORT);
|
Toast.makeText(getActivity(), errString, Toast.LENGTH_SHORT);
|
||||||
if (errMsgId != FingerprintManager.FINGERPRINT_ERROR_CANCELED) {
|
if (errMsgId != FingerprintManager.FINGERPRINT_ERROR_CANCELED) {
|
||||||
retryFingerprint(false);
|
retryFingerprint(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAuthenticationHelp(int helpMsgId, CharSequence helpString) {
|
public void onAuthenticationHelp(int helpMsgId, CharSequence helpString) {
|
||||||
@@ -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
|
||||||
|
Reference in New Issue
Block a user