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線程上。 –