【问题标题】:How to check if new finger was added?如何检查是否添加了新手指?
【发布时间】:2018-11-21 21:38:29
【问题描述】:

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

【问题讨论】:

  • 你对this有什么想法

标签: android fingerprint android-8.0-oreo


【解决方案1】:

我得到了好消息。我终于破解了。

我可以得到所有整数的手指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

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

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

Finger id是设置中存储的指纹的id

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

无需依赖 KeyPermanentlyInvalidatedException。它不会在 Android 8.0 中抛出

祝你好运!!!...

不要相信谷歌做得这么差

【讨论】:

  • 在三星设备中,id是:1 2 3 4,所以你无法正确检测到变化
猜你喜欢
  • 2017-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-12
  • 2017-09-01
  • 2014-09-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多