問題タブ [android-biometric]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
fingerprint - BiometricPrompt で生体認証と PIN/パスワードを確認する正しいフローはどれですか?
BiometricManager
には、canAuthenticate
次の 4 つのフラグのいずれかを返すことができるメソッドがあります。
BiometricPrompt
ここで、その呼び出しの結果が である場合にのみトリガーしBIOMETRIC_SUCCESS
、それ以外の場合は別の認証方法 (つまり、アプリ固有のパスワード) にフォールバックすることが論理的であるように思われます。
しかしsetDeviceCredentialAllowed(true)
、BiometricPrompt を設定すると、チェックが返されなくてもデバイスのパスワードを使用できます(この場合は が返されると思います)。canAuthenticate
BIOMETRIC_SUCCESS
BIOMETRIC_ERROR_NONE_ENROLLED
KeyguardManager
さらに、ピン/パスワード/パターンが設定されているかどうかを確認するために使用できます。
ただし、これは API 23 以降でのみ機能します。ただし、setDeviceCredentialAllowed
23 未満の API レベルで動作します。ただし、これらの古いデバイスにデバイス パスワードが設定されているかどうかを確認する実際の代替手段はないようです。
私の質問は次のとおりです。これらすべての異なるオプションを使用して、適切な認証方法をユーザーに表示する正しいフローは何ですか? 23 未満の API レベルでは、どのようcanAuthenticate
にisDeviceSecure
組み合わせて使用する必要があり、どのチェックを使用する必要がありますか?
android - アラート ダイアログとして表示する代わりに、アクティビティ ページに生体認証ダイアログを表示する
アプリケーションに生体認証プロンプトを実装しています。現在、認証ダイアログは警告ダイアログとして表示されています。これの代わりに、ダイアログをアクティビティページに表示したい(警告ダイアログとして表示したくない)アプリの生体認証ダイアログのようにしたい Whats app authentication screenshot
android - Android 9 以前を実行しているデバイスの AndroidX BiometricPrompt
BiometricPrompt を使用しsetDeviceCredentialAllowed(true)
て複数の失敗した指紋認証を実行すると、デバイスのロックを解除するためにデバイスが PIN/パターンを要求するようにフォールバックすることが予想されます。私の経験では、Android 10 より前の Android デバイスで実際にこれが行われることはありません。
実際に何が起こるかというと、ERROR_LOCKOUT
エラーが表示されonAuthenticationError
、指紋リーダーがシステムによって無効にされます。つまり、UI に「指紋でログイン」ボタンがあっても、ユーザーが何度も認証に失敗した後は何もしません。
Android 10 を実行している OnePlus 7 Pro では、動作は正しいです。認証試行が複数回失敗すると、ダイアログで PIN が要求されます。AndroidX Biometrics を使用すると、古いデバイスでも同じ動作が発生することが予想されます。それとも私は間違っていますか?
編集: これに関するバグ レポートを Google に作成しました: https://issuetracker.google.com/issues/148045413