Merge "Fixes loop in Fingerprint Enrollment" into tm-qpr-dev
This commit is contained in:
@@ -415,7 +415,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
|
||||
// showErrorDialog() will cause onWindowFocusChanged(false), set mIsCanceled to false
|
||||
// before showErrorDialog() to prevent that another error dialog is triggered again.
|
||||
mIsCanceled = true;
|
||||
FingerprintErrorDialog.showErrorDialog(this, errorMsgId);
|
||||
FingerprintErrorDialog.showErrorDialog(this, errorMsgId, mCanAssumeUdfps);
|
||||
mIsOrientationChanged = false;
|
||||
cancelEnrollment();
|
||||
stopIconAnimation();
|
||||
|
@@ -317,7 +317,7 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements
|
||||
if (mNextClicked && errMsgId == FingerprintManager.FINGERPRINT_ERROR_CANCELED) {
|
||||
proceedToEnrolling(false /* cancelEnrollment */);
|
||||
} else {
|
||||
FingerprintErrorDialog.showErrorDialog(this, errMsgId);
|
||||
FingerprintErrorDialog.showErrorDialog(this, errMsgId, mCanAssumeUdfps);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -132,12 +132,12 @@ public class FingerprintEnrollFinish extends BiometricEnrollBase {
|
||||
@Override
|
||||
protected void onNextButtonClick(View view) {
|
||||
updateFingerprintSuggestionEnableState();
|
||||
finishAndToNext();
|
||||
finishAndToNext(RESULT_FINISHED);
|
||||
}
|
||||
|
||||
private void finishAndToNext() {
|
||||
private void finishAndToNext(int resultCode) {
|
||||
mIsAddAnotherOrFinish = true;
|
||||
setResult(RESULT_FINISHED);
|
||||
setResult(resultCode);
|
||||
if (WizardManagerHelper.isAnySetupWizard(getIntent())) {
|
||||
postEnroll();
|
||||
}
|
||||
@@ -184,9 +184,12 @@ public class FingerprintEnrollFinish extends BiometricEnrollBase {
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
updateFingerprintSuggestionEnableState();
|
||||
if (requestCode == BiometricUtils.REQUEST_ADD_ANOTHER && resultCode != RESULT_CANCELED) {
|
||||
if (requestCode == BiometricUtils.REQUEST_ADD_ANOTHER && resultCode == RESULT_TIMEOUT) {
|
||||
finishAndToNext(resultCode);
|
||||
} else if (requestCode == BiometricUtils.REQUEST_ADD_ANOTHER
|
||||
&& resultCode != RESULT_CANCELED) {
|
||||
// If user cancel during "Add another", just use similar flow on "Next" button
|
||||
finishAndToNext();
|
||||
finishAndToNext(RESULT_FINISHED);
|
||||
} else {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
}
|
||||
|
@@ -41,12 +41,14 @@ public class FingerprintErrorDialog extends InstrumentedDialogFragment {
|
||||
|
||||
public static final String KEY_ERROR_MSG = "error_msg";
|
||||
public static final String KEY_ERROR_ID = "error_id";
|
||||
public static final String KEY_UDFPS = "is_udfps";
|
||||
|
||||
@Override
|
||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
|
||||
CharSequence errorString = getArguments().getCharSequence(KEY_ERROR_MSG);
|
||||
final int errMsgId = getArguments().getInt(KEY_ERROR_ID);
|
||||
final boolean canAssumeUdfps = getArguments().getBoolean(KEY_UDFPS, false);
|
||||
boolean wasTimeout = errMsgId == BiometricConstants.BIOMETRIC_ERROR_TIMEOUT;
|
||||
|
||||
builder.setTitle(R.string.security_settings_fingerprint_enroll_error_dialog_title)
|
||||
@@ -59,11 +61,15 @@ public class FingerprintErrorDialog extends InstrumentedDialogFragment {
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
dialog.dismiss();
|
||||
Activity activity = getActivity();
|
||||
activity.setResult(RESULT_FINISHED);
|
||||
if (wasTimeout && !canAssumeUdfps) {
|
||||
activity.setResult(RESULT_TIMEOUT);
|
||||
} else {
|
||||
activity.setResult(RESULT_FINISHED);
|
||||
}
|
||||
activity.finish();
|
||||
}
|
||||
});
|
||||
if (wasTimeout) {
|
||||
if (wasTimeout && canAssumeUdfps) {
|
||||
builder.setPositiveButton(
|
||||
R.string.security_settings_fingerprint_enroll_dialog_try_again,
|
||||
new DialogInterface.OnClickListener() {
|
||||
@@ -95,18 +101,21 @@ public class FingerprintErrorDialog extends InstrumentedDialogFragment {
|
||||
return dialog;
|
||||
}
|
||||
|
||||
public static void showErrorDialog(BiometricEnrollBase host, int errMsgId) {
|
||||
public static void showErrorDialog(BiometricEnrollBase host, int errMsgId,
|
||||
boolean canAssumeUdfps) {
|
||||
if (host.isFinishing()) {
|
||||
return;
|
||||
}
|
||||
|
||||
final FragmentManager fragmentManager = host.getSupportFragmentManager();
|
||||
if (fragmentManager.isDestroyed() || fragmentManager.isStateSaved()) {
|
||||
return;
|
||||
}
|
||||
|
||||
final CharSequence errMsg = host.getText(getErrorMessage(errMsgId));
|
||||
final FingerprintErrorDialog dialog = newInstance(errMsg, errMsgId);
|
||||
CharSequence errMsg = host.getText(getErrorMessage(errMsgId));
|
||||
if (!canAssumeUdfps
|
||||
&& errMsgId == BiometricConstants.BIOMETRIC_ERROR_TIMEOUT) {
|
||||
errMsg = host.getText(getErrorMessage(BiometricConstants.BIOMETRIC_ERROR_CANCELED));
|
||||
}
|
||||
final FingerprintErrorDialog dialog = newInstance(errMsg, errMsgId, canAssumeUdfps);
|
||||
dialog.show(fragmentManager, FingerprintErrorDialog.class.getName());
|
||||
}
|
||||
|
||||
@@ -124,11 +133,13 @@ public class FingerprintErrorDialog extends InstrumentedDialogFragment {
|
||||
}
|
||||
}
|
||||
|
||||
private static FingerprintErrorDialog newInstance(CharSequence msg, int msgId) {
|
||||
private static FingerprintErrorDialog newInstance(CharSequence msg, int msgId,
|
||||
boolean canAssumeUdfps) {
|
||||
FingerprintErrorDialog dialog = new FingerprintErrorDialog();
|
||||
Bundle args = new Bundle();
|
||||
args.putCharSequence(KEY_ERROR_MSG, msg);
|
||||
args.putInt(KEY_ERROR_ID, msgId);
|
||||
args.putBoolean(KEY_UDFPS, canAssumeUdfps);
|
||||
dialog.setArguments(args);
|
||||
return dialog;
|
||||
}
|
||||
|
Reference in New Issue
Block a user