gpt4 book ai didi

android - 如何检查是否添加了新手指?

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

我有一个带指纹认证的应用程序。在 Android 8 发布之前,它一直运行良好。所以问题是,当我注册新指纹时,没有 KeyPermanentlyInvalidatedException。所以它只发生在 Android 8 上,较低的 API 就可以了,我可以检查这个异常是否添加了新的指纹。我如何检查 Android 8 中的新指纹?Google 示例应用程序 - FingerprintDialog - 也有同样的问题。它没有看到注册新指纹的变化。打开谷歌问题: https://issuetracker.google.com/issues/65578763

最佳答案

我有个好消息。我终于破解了它。

我可以获得整数形式的所有手指 ID。

private void getFingerprintInfo(Context context) 
{
try {
FingerprintManager fingerprintManager = (FingerprintManager) context.getSystemService(Context.FINGERPRINT_SERVICE);
Method method = FingerprintManager.class.getDeclaredMethod("getEnrolledFingerprints");
Object obj = method.invoke(fingerprintManager);

if (obj != null) {
Class<?> clazz = Class.forName("android.hardware.fingerprint.Fingerprint");
Method getFingerId = clazz.getDeclaredMethod("getFingerId");

for (int i = 0; i < ((List) obj).size(); i++)
{
Object item = ((List) obj).get(i);
if(item != null)
{
System.out.println("fkie4. fingerId: " + getFingerId.invoke(item));
}
}
}
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException | ClassNotFoundException e) {
e.printStackTrace();
}
}

请引用:https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/hardware/fingerprint/Fingerprint.java

有一个公共(public)方法getFingerId( ),但是我们不能调用它,因为它有“@UnsupportedAppUsage”。

所以需要使用反射来调用方法。获得指纹 ID 列表后,您可以将它们加密并存储在 sharedPreference 中。

Finger id是setting中保存的指纹的id

获取所有指纹后,可以判断用户是否添加/删除了指纹。

无需依赖 KeyPermanentlyInvalidatedException。 Android 8.0不抛出

祝你好运!!!...

不相信谷歌做得这么差

关于android - 如何检查是否添加了新手指?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46182519/

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