有一种方法可以创建要求用户进行身份验证的意图。它被提示使用生物识别技术(如果存在(进行身份验证,或者如果没有注册生物识别技术,则使用PIN/模式/密码进行身份验证。现在它已被弃用,并建议手动构建生物特征提示。但在源代码中,我看到几乎相同的公共方法返回相同的意图,但请求另一个参数userId
/**
* Get an intent to prompt the user to confirm credentials (pin, pattern or password)
* for the given user. The caller is expected to launch this activity using
* {@link android.app.Activity#startActivityForResult(Intent, int)} and check for
* {@link android.app.Activity#RESULT_OK} if the user successfully completes the challenge.
*
* @return the intent for launching the activity or null if no password is required.
*
* @hide
*/
public Intent createConfirmDeviceCredentialIntent(
CharSequence title, CharSequence description, int userId) {
if (!isDeviceSecure(userId)) return null;
Intent intent = new Intent(ACTION_CONFIRM_DEVICE_CREDENTIAL_WITH_USER);
intent.putExtra(EXTRA_TITLE, title);
intent.putExtra(EXTRA_DESCRIPTION, description);
intent.putExtra(Intent.EXTRA_USER_ID, userId);
// explicitly set the package for security
intent.setPackage(getSettingsPackageForIntent(intent));
return intent;
}
现在还没有解释这个方法中预期的userId是什么。有人能给我指一下相关文件吗?其次,它比自己构建生物识别提示并处理其所有状态更好吗?我目前正在使用
implementation 'androidx.biometric:biometric:1.2.0-alpha04
通过查看Android Git的历史记录,我可以看出,这个API似乎从2015年就已经存在了,可能应该像其他方法一样在2020年被弃用,但由于它被注释为@hide
(因此被API文档隐藏(,因此被错过了。
https://android.googlesource.com/platform/frameworks/base/+责怪/master/core/java/android/app/KeyguardManager.java