Ask for unlock pattern - Android
Asked Answered
C

1

6

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.

Chalmers answered 4/6, 2016 at 11:25 Comment(2)
Have you found a backport solution?Calistacalisthenics
@Beloo: No, I did not find anything for API below Lollipop.Chalmers
A
7

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();
    }
  }
}
Alsoran answered 4/6, 2016 at 11:42 Comment(1)
Thank you, I'll have a look at this. I am also looking for a solution compatible from API level 16.Chalmers

© 2022 - 2024 — McMap. All rights reserved.