我有一个应用程序提供使用指纹进行身份验证。
在询问用户是否想要启用它之前,我会验证它是否可用,并且是通过以下方式完成的:
FingerprintManager fingerprintManager = context.getSystemService(FingerprintManager.class);
return fingerprintManager.isHardwareDetected() && fingerprintManager.hasEnrolledFingerprints();
Run Code Online (Sandbox Code Playgroud)
FingerprintManager的两个方法都注释有:
@RequiresPermission(USE_FINGERPRINT)
Run Code Online (Sandbox Code Playgroud)
但是,USE_FINGERPRINT 权限是普通权限,如http://developer.android.com/guide/topics/security/normal-permissions.html中所指定。这意味着,一旦您在AndroidManifest.xml文件中声明该权限(我们这样做,该功能已经过测试并在测试设备上运行),您就不必在运行时检查它。
根据 Fabric 崩溃报告的报告,现在发生的情况是,一些用户在调用FingerprintManager.isHardwareDetected()时崩溃:
java.lang.SecurityException: Must have android.permission.USE_FINGERPRINT permission.: Neither user 10150 nor current process has android.permission.USE_FINGERPRINT.
Run Code Online (Sandbox Code Playgroud)
到目前为止,已经有 2 位用户出现这种情况,他们都使用 Marshmallow(Android 6.0),但他们都没有 root(据 Fabric 报道),设备是 LG G4 Stylus(LG H635)和 Sony Xperia Z5 Premium(Sony E6853)。
关于这如何可能以及可能的解决方案有什么解释吗?
如果这些用户不是使用普通 Android,我想说他们能够通过自定义 ROM 功能(例如 CyanogenMod 的隐私保护)来操纵应用程序权限。但事实似乎并非如此。
堆栈跟踪是:
Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{MY.PACKAGE/MY.PACKAGE.MYACTIVITY}: java.lang.SecurityException: Must have android.permission.USE_FINGERPRINT permission.: Neither user 10150 nor …Run Code Online (Sandbox Code Playgroud) android android-permissions android-6.0-marshmallow android-fingerprint-api
我在Mac El Capitan上使用Android Studio.如何获得发布证书指纹?我需要它用于Firebase.我不确定如何得到它.
我正在构建一个Android应用程序,我需要使用指纹api通过用户名和密码(在备份上)对用户进行身份验证.
这是我用最简单的术语理解我需要做的事情.
在用户输入用户名和密码并使用后端成功验证后登录时,我生成并将具有这些凭据的特定密钥库存储到androidkeystore.
在下次登录时,如果用户通过指纹成功进行身份验证,则从android密钥库中检索凭据(用户名和密码),并使用这些凭据在后端对用户进行身份验证.
我已经关注:http: //www.techotopia.com/index.php/An_Android_Fingerprint_Authentication_Tutorial
这给出了如何使用指纹API通过设备对用户进行身份验证的一个很好的示例.但是如何获取凭据,以便我可以使用后端对用户进行身份验证?
我想做什么的步骤,建议或详细示例?
谢谢.
android android-authenticator android-keystore android-security android-fingerprint-api
我在我的应用程序中使用FingerprintManager,通常一切正常.我遇到的主要问题是客户有时会抱怨指纹操作有时会被取消,我可以在日志中看到错误5(指纹操作取消).现在,我知道其他未发展良好的应用程序如果没有在onPause或类似的情况下发布它可以保持传感器,所以即使锁屏也不能使用传感器.有没有办法解决这个问题,并强制传感器再次开始使用我的应用程序?
谢谢
我正在开发一个应用程序,它要求用户登录(电子邮件/密码),然后才能继续使用应用程序的其余部分。
我实现了指纹扫描,代码正确地验证了指纹是设备授权指纹列表中注册的指纹之一。
我的问题是我希望能够将这两种情况关联起来,例如用户使用电子邮件/密码登录,然后转到一个屏幕,他可以将指纹与他刚刚登录的帐户关联起来,然后在将来任何时候他在应用程序上使用指纹登录,应用程序会向服务器发送某种代表指纹的唯一密钥,服务器会知道该密钥与该用户的密钥匹配(之前在将指纹与帐户关联时保存)并返回该用户的信息。
从我的研究来看,似乎不可能关联特定的指纹,因为它们与设备相关联,但作为设备的身份验证也可以工作,因为我们假设只有一个用户使用该特定手机,即使不同人们可以访问手机,并在允许的情况下注册他们的指纹,该应用程序将始终使用同一用户登录。
为了能够拥有这种行为,我需要某种独特的未更改密钥来代表用户/指纹。是否可以?当收到 onAuthenticationSucceeded 的响应时,我可以从 AuthenticationResult 中检索该信息吗?
提前致谢。
我有一个允许用户使用指纹身份验证登录的应用程序。该功能已经投入生产几个月了,但在最后一天我开始看到许多这样的异常:
java.lang.SecurityException: Must have android.permission.USE_FINGERPRINT permission.: Neither user ##### nor current process has android.permission.USE_FINGERPRINT.
fingerprintManager.isHardwareDetected()当我打电话检查设备是否支持指纹认证时,发生崩溃。我有USE_FINGERPRINT清单中声明的权限,所以我不知道为什么系统会认为该进程没有这个权限。这不应该是我必须在运行时检查的事情,因为这USE_FINGERPRINT是正常的权限。
这几个月来一直运行良好,昨天开始崩溃时,我们已经稳定发布了大约一个月。这个问题听起来几乎与FingerprintManager.isHardwareDetected() 抛出 java.lang.SecurityException 相同?。我只在 Oreo 设备上看到崩溃。
我当前的计划是捕获Security Exception并继续,就好像设备没有硬件一样,但我担心这可能意味着如果此问题仍然存在,则没有人能够使用该功能进行登录。最近还有其他人遇到过此异常的问题吗?或者如果没有,是否有人知道为什么这种情况会突然开始发生?谢谢您的帮助!
android android-permissions android-fingerprint-api android-8.0-oreo android-8.1-oreo
我正在尝试实施生物识别提示 API 以使用指纹验证对用户进行身份验证。我成功地集成了生物识别提示,它正在 andorid 9.0 上运行。但正如文档所示,生物识别 api 也向后兼容,但是当我使用下面的代码构建对话框时,它会显示 API 支持警告。
调用需要 API 级别 28(当前最低为 15):new android.hardware.biometrics.BiometricPrompt.Builder less... (Ctrl+F1) 此检查会扫描应用程序中的所有 Android API 调用,并警告任何以下调用:不适用于此应用程序的所有目标版本(根据清单中的最小 SDK 属性)
mBiometricPrompt = new BiometricPrompt.Builder(this)
.setDescription("Description")
.setTitle("Title")
.setSubtitle("Subtitle")
.setNegativeButton("Cancel", getMainExecutor(), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Log.i(TAG, "Cancel button clicked");
}
})
.build();
Run Code Online (Sandbox Code Playgroud)
我在我的应用程序上使用BiometricPrompt。当我尝试在 OnePlus 设备上使用并使用未在操作系统上注册的另一个手指验证指纹时,它将触发回调onAuthenticationFailed()并且生物识别提示将被忽略。第一次尝试时就会发生这种情况。是否可以让用户多次失败(在文档中,我们在 30 秒内失败了 5 次,在第 5 次尝试后应该触发onAuthenticationError(int errorCode, @NonNull CharSequence errString)7 作为错误代码)而不关闭对话框?
biometrics android-fingerprint-api android-biometric-prompt oneplus6t oneplus7
我的应用程序包含登录的用户身份验证(包括 pin/图案、指纹解锁),这取决于设备安全性。我正在使用生物识别管理器来使用BiometricManager检测设备是否支持指纹,并使用isDeviceSecure()检查设备是否受到保护。我需要检测移动设备在哪种模式下受到保护,无论是使用引脚/图案、使用指纹的引脚/图案、使用面部解锁的引脚/图案还是所有三种模式(引脚/图案、面部解锁、指纹)。
android android-fingerprint-api android-biometric-prompt android-biometric
如何检测手机是否有指纹硬件。我想要一个检测指纹硬件的代码。
我使用了这段代码,但此代码在“isHardwareDetected()”此方法上显示错误。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//Fingerprint API only available on from Android 6.0 (M)
FingerprintManager fingerprintManager = (FingerprintManager) context.getSystemService(Context.FINGERPRINT_SERVICE);
if (!fingerprintManager.isHardwareDetected()) {
// Device doesn't support fingerprint authentication
} else if (!fingerprintManager.hasEnrolledFingerprints()) {
// User hasn't enrolled any fingerprints to authenticate with
} else {
// Everything is ready for fingerprint authentication
}
}
Run Code Online (Sandbox Code Playgroud) android ×9
fingerprint ×3
biometrics ×1
certificate ×1
firebase ×1
kotlin ×1
oneplus6t ×1
oneplus7 ×1