私のアプリが "Too Many Attempts ..."に当たったとき、認証エラー0x7、FINGERPRINT_ERROR_LOCKOUT、ループでFingerprintManager.authenticate()を呼び出しずにロックアウト条件がクリアされたというエラーをどうやって伝えることができますか?FINGERPRINT_ERROR_LOCKOUTがAndroid FIngerprintManagerで期限切れになったときにプログラムでどのように通知するのですか?
答えて
システムFingerprintServiceのAOSP実装を見ると、実際には、ロックアウト期間が過ぎた後に送信されるブロードキャストインテントがあります。探しているインテントアクションはcom.android.server.fingerprint.ACTION_LOCKOUT_RESET
です。あなたの活動に
、あなたは放送受信機を登録し、この目的のために待って、そのようなことができます。
public class MyActivity extends Activity {
...
private static final String ACTION_LOCKOUT_RESET =
"com.android.server.fingerprint.ACTION_LOCKOUT_RESET";
private final BroadcastReceiver mLockoutReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (ACTION_LOCKOUT_RESET.equals(intent.getAction())) {
doWhateverYouNeedToDoAfterLockoutHasBeenReset();
}
}
};
private void registerLockoutResetReceiver() {
Intent ret = getContext().registerReceiver(mLockoutReceiver, new IntentFilter(ACTION_LOCKOUT_RESET),
null, null);
}
public void onCreate(Bundle savedInstanceState) {
registerLockoutResetReceiver();
...
}
...
}
WARNING:これはパブリックAPIの一部ではないので、この動作はして変更されることがありそれ以降のOSアップデート。しかし、私はノーガットでそれを試して、それは私のために非常にうまく動作します。
参考:
関連AOSPコードが./frameworks/base/services/core/java/com/android/server/fingerprint/FingerprintService.javaです。このファイルでは、我々は、作成中のACTION_LOCKOUT_RESET
意図してPendingIntent
を見つけることができます。
private PendingIntent getLockoutResetIntent() {
return PendingIntent.getBroadcast(mContext, 0,
new Intent(ACTION_LOCKOUT_RESET), PendingIntent.FLAG_UPDATE_CURRENT);
}
このPendingIntentはAlarmManagerによっていくつかの時間経過後にオフに設定されるように登録されている:
private void scheduleLockoutReset() {
mAlarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + FAIL_LOCKOUT_TIMEOUT_MS, getLockoutResetIntent());
}
私はこれを試しましたが、ブロードキャストを受信した後、指紋デバイスはどの指紋スキャンにも反応しませんでした。私は再スキャンするために活動を再開しなければならなかった。誰も似たような問題を見ている? –
@JeffreyLiuロックアウト後、指紋デバイスマネージャを再起動する必要があります。 – hopia
どのように再起動しますか?@hopia –
- 1. Android Geofenceが期限切れになったときに知る方法?
- 2. JCSが期限切れ/通知時に通知する
- 3. メッセージキューが空になったときにJavaScriptがどのように通知されるのですか?
- 4. Google Sheetsで期限切れになる前に電子メールで通知する
- 5. トークンが4で期限切れになったときにサイレントログインしますか?
- 6. セッションの期限が切れたときはどうすれば知ることができますか?
- 7. 通知チャネルがAndroid Oで有効になっている場合、プログラムでどのように知ることができますか?
- 8. Express.jsでクッキーが期限切れになるようにするにはどうすればよいですか?
- 9. redisキーが期限切れになったときに通知を受け取る方法は?
- 10. アプリが途中で動作しなくなったときに、どのように通知されますか?
- 11. ブラックベリープッシュ通知のアプリケーションIDが期限切れです
- 12. Android - 署名キーが期限切れになるとどうなりますか?
- 13. Laravel 5.2:キャッシュが期限切れになったときのイベント
- 14. セッションがAJAXで期限切れになったときにログインページに移動
- 15. セッションクッキーがDjangoで期限切れになったときにログインにリダイレクト
- 16. サーバのドメインが期限切れになった後にgcm通知を送信中にMismatchSenderIdを取得する
- 17. Angularインターセプタのトークンが期限切れになったときに更新する
- 18. SpringMVCでセッションが期限切れになったときにエラーページを表示
- 19. MySQLのバックアップでタイムアウトが期限切れになった - C#
- 20. Androidでは、ユーザーがシステム通知トレイを開いたときにどのように検出できますか?
- 21. クッキーが期限切れになったときjquery display fancybox
- 22. セッションが期限切れであることを知るには?
- 23. パスワードがldapsearchで期限切れになるときの検索
- 24. 移行期限が切れたので、どのようにページをアプリケーションに関連付けるのですか?
- 25. セッションが期限切れになったときにPHPを実行する
- 26. ブラウザが終了したときに期限切れになるようにjsで設定されたCookie
- 27. Androidが期限切れにならないようにするfacebook user token
- 28. アクセストークンが期限切れになっていることを知るには?
- 29. Oauthアクセストークンの有効期限が切れたときにajaxコールを破棄しないようにするにはどうすればよいですか?
- 30. デバイスの電源が切れている間に期限切れになるローカル通知が失われる
多くのものの中で、私はロックアウト期間中に 'hasEnrolledFingerprints()'と 'isHardwareDetected()'を呼び出して、何らかの例外を返すかスローするかどうかを確認しようとしました。そこに運がない、それらの呼び出しは期待どおりに動作します。 – neuman8
解決方法を見つけましたか?私はまた、残りのロックアウト時間と、デバイスがauthenticate()を呼び出す前にロックされているかどうかを知りたいと思います。 – Niels
@Niels私はもうこれ以上追求していませんが、最新バージョンのFingerprintManager.javaソースコードを見ると、次のようなものが表示されます: 'public static abstract class LockoutResetCallback { //ロックアウト期間が切れてクライアントが許可されたときに呼び出されます再び指紋を聞く。 public void onLockoutReset(){} } – neuman8