0
このbasic Androidチュートリアルアプリでは、指紋認証を検証するToastメッセージを印刷します。しかし、それは一度しか認証できません。私はそれがアプリがまだ実行されているときはいつでも指紋を再認証できるようにしたい。 helper.startAuth()の周りにwhileループをラップして追加しようとしましたが、動作しません。私はいくつかの質問(1、2、3)を参照しましたが、それらのどれも私を助けていません。これは私が試したことであり、うまくいきません。onCreate()でFingerPrintを繰り返し認証する方法
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);
}
}
ご返信ありがとうございます。 [Services](http://stackoverflow.com/a/6957909/3713720)についてどう思いますか?それはより優れた選択肢であり、サービスではなくAsyncTaskを使用すべき理由は何ですか? – Cliff
彼らはまったく別のものですが、必ずしも/またはどちらでもありません。サービスとは、アクティビティ間で共有される長期間の処理を意味します。 AsyncTaskは、別のスレッドで比較的高速に処理するためのものです。サービスは追加のスレッドを起動できますが、デフォルトではUIスレッド上にあります。 –