0
此basic Android教程应用程序将打印验证指纹验证的Toast消息。但它只能验证一次。我希望它能够在应用程序仍在运行时重新验证指纹。我试图添加一个while循环包装helper.startAuth(),它不起作用。我提到了几个问题(1,2,3),但没有一个帮助我。这是我试过的,它不工作。如何在onCreate()中反复验证指纹()
if (cipherInit()) {
cryptoObject = new FingerprintManager.CryptoObject(cipher);
FingerprintHandler helper = new FingerprintHandler(this);
while(true){
helper.startAuth(fingerprintManager, cryptoObject);
}
}
这是我的onCreate()。感谢您的帮助和指导
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fingerprintManager = (FingerprintManager) getSystemService(FINGERPRINT_SERVICE);
keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
if (!keyguardManager.isKeyguardSecure()){
Toast.makeText(this,
"Lock screen security is not enable in Settings", Toast.LENGTH_LONG).show();
return;
}
if (ActivityCompat.checkSelfPermission(this,
Manifest.permission.USE_FINGERPRINT) != PackageManager.PERMISSION_GRANTED){
Toast.makeText(this,
"Fingerprint authentication permission is not enabled", Toast.LENGTH_LONG).show();
return;
}
if (!fingerprintManager.hasEnrolledFingerprints()){
Toast.makeText(this, "Register at least one fingerprint in Settings", Toast.LENGTH_LONG).show();
return;
}
generateKey();
if (cipherInit()) {
cryptoObject = new FingerprintManager.CryptoObject(cipher);
FingerprintHandler helper = new FingerprintHandler(this);
helper.startAuth(fingerprintManager, cryptoObject);
}
}
感谢您的回复。你怎么看[服务](http://stackoverflow.com/a/6957909/3713720)。这是一个更好的选择,我应该使用AsyncTask而不是服务的原因是什么? – Cliff
他们是完全不同的东西,不一定是/或者。服务意味着活动之间共享的长期处理。 AsyncTask意味着在另一个线程上进行相对快速的处理。服务可以启动其他线程,但默认情况下是在UI线程上。 –