Android fingerprint detect new finger added

后端 未结 3 1942
陌清茗
陌清茗 2020-12-03 00:13

How to detect if the user add new fingerprint to Android settings after he/she authenticate finger inside my application ?

i.e. iOS have something called (evaluated

3条回答
  •  天命终不由人
    2020-12-03 01:03

    I can get all finger id in integers.

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

    please refer to this: https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/hardware/fingerprint/Fingerprint.java

    there is a public method getFingerId( ), but it is not available for us to call because it has "@UnsupportedAppUsage".

    so you need to use reflection to call the method. after you get a list of fingerprint id, you can encrypt them and store in sharedPreference.

    Finger id is the id of the fingerprints stored in setting

    After you get all finger ids, you can determine if user has added/deleted a fingerprint.

    No need to count on the KeyPermanentlyInvalidatedException. It is not thrown in Android 8.0

    Good luck!!!...

    don't believe google did such a poor job

提交回复
热议问题