【问题标题】:Android fingerprint API - migrating from Samsung SpassAndroid 指纹 API - 从三星 Spas 迁移
【发布时间】:2016-08-09 15:46:51
【问题描述】:

假设我有一个使用指纹来验证用户身份的应用程序。在 Android 5 上,我仅将 Samsung Spas 库用于三星设备。随着 Android M 的发布,我添加了对许多设备的支持。首先,我检查我是否是 Android M,然后检查我是否有管理器实例、是否有硬件以及是否注册了指纹:

 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        FingerprintManager manager = (FingerprintManager) context.getSystemService(Context.FINGERPRINT_SERVICE);
        if (manager != null) {
            logger.info("Android native fingerprint manager exists");
            if (manager.isHardwareDetected()) {
                logger.info("Android native fingerprint manager detected hardware");
                if (manager.hasEnrolledFingerprints()) {
                    logger.info("Android native fingerprint manager has enrolled fingerprints");
                }
            }
            return new AndroidFingerprintHelper(context);
        }
    }

如果我在这里失败了,我会退回去检查 Android 是否是三星并且它是否安装了 Spass 库。现在的问题是:如果用户使用 Spass 在三星上拥有 Lollipop 并注册了指纹。之后他升级到 Android M 没有注册新指纹manager.hasEnrolledFingerprints() 会返回 true 吗?换句话说,三星 Spass 库是否与 Android 操作系统共享其数据?谢谢。

【问题讨论】:

    标签: android samsung-mobile-sdk android-fingerprint-api


    【解决方案1】:

    经过大量研究和测试,我发现: 在带有 Android M 的三星上,FingerPrintManager 永远不会null,但如果指纹是使用 Spass 库(三星原生 SDK)注册的,则尝试调用 manager.isHardwareDetected() 将为原生 Android 指纹管理器返回 false。

    【讨论】:

    • 您能告诉我您是如何将 Spas 库添加到您的项目中的吗?是否有 Gradle 依赖项或 .jar 可供下载?如果您能发布一个下载网址,将不胜感激。
    • 实施 'com.samsung.android.sdk:sdk:1.0.0' 实施 'com.samsung.android.sdk:pass:1.2.0'
    【解决方案2】:

    如果三星设备支持 Android 原生生物识别库,则使用它,否则使用三星自己的 Spass 库。没有这个,我对带有 Android Pie 的 S9+ 有疑问。这解决了这个问题。

    if (Build.BRAND.equals("samsung")) {
            if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) {
                FingerprintManager fingerprintManager = (FingerprintManager) context.getSystemService(Context.FINGERPRINT_SERVICE);
                if (fingerprintManager != null && fingerprintManager.isHardwareDetected()) {
                    return new FingerprintHelperNative(context);
                }
            }
            Log.d(TAG, "Using Samsung fingerprint library. ");
            return new FingerprintHelperSamsung(context);
        } else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) {
            return new FingerprintHelperNative(context);
        } else return null;
    

    【讨论】:

      猜你喜欢
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多