(Android 6.0以降では)ネイティブAndroid Fingerprint APIを使用してユーザーを認証するアプリケーションを作成しています。あるシナリオでAndroidの指紋api - SCREEN_ONインテントの後にFingerprintManager.AuthenticationCallbackが呼び出されない
- デバイスは、GCMの通知を受信し、画面がオフの場合は電話がロックされていない - アプリは次のフラグとactivity
を起動して、デバイスを「ウェイク」:
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
アプリケーションは、ユーザに指で認証するように尋ねるダイアログを表示します。この場合、 - (FingerprintManager.AuthenticationCallback
から - )は、コールバック関数が
と呼ばれていない、ここのコードです:
fingerprintManager.authenticate(null, cancellationSignal, 0, new FingerprintManager.AuthenticationCallback() {
@Override
public void onAuthenticationError(int errorCode, CharSequence errString) {
super.onAuthenticationError(errorCode, errString);
logger.info("Authentication error " + errorCode + " " + errString);
...
}
@Override
public void onAuthenticationHelp(int helpCode, CharSequence helpString) {
super.onAuthenticationHelp(helpCode, helpString);
logger.info("Authentication help message thrown " + helpCode + " " + helpString);
...
}
@Override
public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) {
super.onAuthenticationSucceeded(result);
logger.info("Authentication succeeded");
...
}
/*
* Called when authentication failed but the user can try again
* When called four times - on the next fail onAuthenticationError(FINGERPRINT_ERROR_LOCKOUT)
* will be called
*/
@Override
public void onAuthenticationFailed() {
super.onAuthenticationFailed();
logger.info("Authentication failed");
...
}
}, null);
画面が上にあるときに、同じコードが実行されると、それはオフだとき、それはオフだが、ときにオンアクティビティによって - コールバックは呼び出されません。
アイデア? ありがとうございます!