要求解锁图案 - Android
Ask for unlock pattern - Android
有没有办法,我可以要求用户使用设置的模式(密码、指纹等)对其 phone 执行解锁操作以访问我的应用程序的某些功能?
例如,在iOS中,我根据二维码生成了一个OTP。在向用户显示生成的 OTP 令牌之前,我可以向用户询问解锁密码。我希望我的 android 应用程序也一样。这样可以防止滥用应用程序。
您可以使用 KeyguardManager
class 创建该意图,使用自 API 21 起可用的 createConfirmDeviceCredentialIntent 方法,它应该从您的 activity 使用 startActivityForResult(intent)
方法。
在你的activity中:
private static final int CREDENTIALS_RESULT = 4342; //just make sure it's unique within your activity.
void checkCredentials() {
KeyguardManager keyguardManager = this.getSystemService(Context.KEYGUARD_SERVICE);
Intent credentialsIntent = keyguardManager.createConfirmDeviceCredentialIntent("Password required", "please enter your pattern to receive your token");
if (credentialsIntent != null) {
startActivityForResult(credentialsIntent, CREDENTIALS_RESULT);
} else {
//no password needed
doYourThing();
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Bundle data) {
if (requestCode == CREDENTIALS_RESULT) {
if(resultCode == RESULT_OK) {
//hoorray!
doYourThing();
} else {
//uh-oh
showSomeError();
}
}
}
有没有办法,我可以要求用户使用设置的模式(密码、指纹等)对其 phone 执行解锁操作以访问我的应用程序的某些功能?
例如,在iOS中,我根据二维码生成了一个OTP。在向用户显示生成的 OTP 令牌之前,我可以向用户询问解锁密码。我希望我的 android 应用程序也一样。这样可以防止滥用应用程序。
您可以使用 KeyguardManager
class 创建该意图,使用自 API 21 起可用的 createConfirmDeviceCredentialIntent 方法,它应该从您的 activity 使用 startActivityForResult(intent)
方法。
在你的activity中:
private static final int CREDENTIALS_RESULT = 4342; //just make sure it's unique within your activity.
void checkCredentials() {
KeyguardManager keyguardManager = this.getSystemService(Context.KEYGUARD_SERVICE);
Intent credentialsIntent = keyguardManager.createConfirmDeviceCredentialIntent("Password required", "please enter your pattern to receive your token");
if (credentialsIntent != null) {
startActivityForResult(credentialsIntent, CREDENTIALS_RESULT);
} else {
//no password needed
doYourThing();
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Bundle data) {
if (requestCode == CREDENTIALS_RESULT) {
if(resultCode == RESULT_OK) {
//hoorray!
doYourThing();
} else {
//uh-oh
showSomeError();
}
}
}