gpt4 book ai didi

android - 如何以编程方式判断 FINGERPRINT_ERROR_LOCKOUT 在 Android FIngerprintManager 中何时过期?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:14:54 25 4
gpt4 key购买 nike

当我的应用遇到“尝试次数过多...”、身份验证错误 0x7、FINGERPRINT_ERROR_LOCKOUT 时,我如何才能在不循环调用 FingerprintManager.authenticate() 并收到锁定条件已清除的错误的情况下判断?

最佳答案

看系统FingerprintService的AOSP实现,其实有一个broadcast intent是在lockout period过后发出的。要查找的 Intent 操作是 com.android.server.fingerprint.ACTION_LOCKOUT_RESET

在你的 Activity 中,你可以注册一个广播接收器并等待这个 Intent ,就像这样:

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();
...
}

...
}

警告:这不是公共(public) API 的一部分,因此,此行为可能会随着以后的操作系统更新而改变。但我确实在牛轧糖上试过了,它对我来说效果很好。

引用:

相关的AOSP代码是./frameworks/base/services/core/java/com/android/server/fingerprint/FingerprintService.java .在这个文件中,我们可以找到一个 PendingIntent,它正在创建一个 ACTION_LOCKOUT_RESET Intent :

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());
}

关于android - 如何以编程方式判断 FINGERPRINT_ERROR_LOCKOUT 在 Android FIngerprintManager 中何时过期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37258169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com