首页 > 解决方案 > 认证成功后如何完成活动

问题描述

我试图在fingerAuthentification成功后完成登录活动,我尝试使用“finish()”和“finishAffinity()”但我收到错误“无法解析方法finish()或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 error\n" + 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 help\n" + 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);
    }
}

标签: androidandroid-studio

解决方案


finish()是一种方法Activity,不是Context。你无法完成一个上下文。目前尚不清楚您是否在活动的上下文中运行。如果你是,就打电话finish()给你自己(或YourActivity.this.finish())。


推荐阅读