Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ask for unlock pattern - Android

Is there a way, I can ask a user for perform the unlock operation on his phone using the set pattern(passcode, fingerprint, etc) to access certain features of my application?

For example, in iOS, I generate an OTP based on a QR code. I can ask the user for the unlock pin before showing him the generated OTP token. I want the same for my android application. This prevents the misuse of the application.

like image 637
Prerak Sola Avatar asked Jun 04 '16 11:06

Prerak Sola


1 Answers

You can create that intent with the KeyguardManager class, using the createConfirmDeviceCredentialIntent method available since API 21, it should be called from your activity with the startActivityForResult(intent) method.

In your 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();
    }
  }
}
like image 185
fixmycode Avatar answered Nov 16 '22 11:11

fixmycode