身份验证成功后如何完成活动



我试图在finishAuthentification成功后完成登录活动,我尝试过使用"finish(("one_answers"finishAffinity(

@TargetApi(Build.VERSION_CODES.M)
public class FingerprintHandler extends FingerprintManager.AuthenticationCallback {
private CancellationSignal cancellationSignal;
private Context context;
public FingerprintHandler(Context mcontext) { context = mcontext; }
public void startAuth(FingerprintManager manager, FingerprintManager.CryptoObject cryptoObject) {
cancellationSignal = new CancellationSignal();
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.USE_FINGERPRINT) != PackageManager.PERMISSION_GRANTED) {
return;
}
manager.authenticate(cryptoObject, cancellationSignal, 0, this, null);
}
@Override
public void onAuthenticationError(int errMsgId, CharSequence errString) {
Toast.makeText(context,"Authentication errorn" + errString, Toast.LENGTH_LONG).show();
}
@Override
public void onAuthenticationFailed() {
Toast.makeText(context, "Authentication failed", Toast.LENGTH_LONG).show();
}
public void onAuthenticationHelp(int helpMsgId, CharSequence helpString) {
Toast.makeText(context, "Authentication helpn" + helpString, Toast.LENGTH_SHORT).show();
}
@Override
public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) {
Toast.makeText(context, "Authentication Success!!", Toast.LENGTH_SHORT).show();
Handler hd = new Handler();
hd.postDelayed(new Runnable() {
@Override
public void run() {
context.startActivity(new Intent(context, MainActivity.class));
FingerLogin.finish();
}
}, 2000);
}
}

finish()Activity上的一个方法,而不是Context。你无法完成上下文。目前还不清楚你是否在活动的背景下跑步。如果是,只需自己拨打finish()(或YourActivity.this.finish()(。

我以前没有尝试过,但理论上应该可以:

步骤1:在构造函数中传递Activity而不是Context。这是要完成的活动。

步骤2:将此活动分配给一个私有变量。

步骤3:在需要时对变量调用finish()

代码应该是这样的:

public class FingerprintHandler extends FingerprintManager.AuthenticationCallback {
private CancellationSignal cancellationSignal;
private Activity activity;
public FingerprintHandler(Activity mActivity) { activity = mActivity; }
.....
@Override
public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) {
Toast.makeText(activity.getApplicationContext(), "Authentication Success!!", Toast.LENGTH_SHORT).show();
Handler hd = new Handler();
hd.postDelayed(new Runnable() {
@Override
public void run() {
activity.startActivity(new Intent(context, MainActivity.class));
activity.finish();
}
}, 2000);

使用此选项访问活动的覆盖方法:

if(context instanceof FingerLogin){
((FingerLogin)context).finish();
}

最新更新