FingerprintDialog from Android 28 (P) back ported to Android 23 (M).
FingerprintManager
for fingerprint authentication. Developer has to manually authenticate by implementing bunch of APIs.FingerprintDialog
for fingerprint authentication.FingerprintDialog
from Android P and provides single public APIs for the authentication all the way to API 14. So as a developer you don't have to deal with the complexity of dealing with different APIs.✌️FingerprintDialog
from Android P, provides same fingerprint authentication on all Android versions.implementation 'com.kevalpatel2106:fingerprint-dialog-compat:1.0'
FingerprintDialogBuilder
and provide the title, subtitle and the description. Application should explain why they need to access user's fingerprint.final FingerprintDialogBuilder dialogBuilder = new FingerprintDialogBuilder(Activity.this)
.setTitle(/* Title of the fingerprint dialog */)
.setSubtitle(/* Subtitle of the fingerprint dialog */)
.setDescription(/* Description of the fingerprint dialog */)
.setNegativeButton(/* Negative button of the fingerprint dialog */);
val dialogBuilder = FingerprintDialogBuilder(this)
.set Title(/* Title of the fingerprint dialog */)
.setSubtitle(/* Subtitle of the fingerprint dialog */)
.setDescription(/* Description of the fingerprint dialog */)
.setNegativeButton(/* Negative button of the fingerprint dialog */)
AuthenticationCallback
to get callbacks for error or success from the fingerprint authentication dialog.final AuthenticationCallback callback = new AuthenticationCallback() {
@Override
public void fingerprintAuthenticationNotSupported() {
// Device doesn't support fingerprint authentication. May be device doesn't have fingerprint hardware or device is running on Android below Marshmallow.
// Switch to alternate authentication method.
}
@Override
public void hasNoFingerprintEnrolled() {
// User has no fingerprint enrolled.
// Application should redirect the user to the lock screen settings.
// FingerprintUtils.openSecuritySettings(this)
}
@Override
public void onAuthenticationError(final int errorCode, @Nullable final CharSequence errString) {
// Unrecoverable error. Cannot use fingerprint scanner. Library will stop scanning for the fingerprint after this callback.
// Switch to alternate authentication method.
}
@Override
public void onAuthenticationHelp(final int helpCode, @Nullable final CharSequence helpString) {
// Authentication process has some warning. such as "Sensor dirty, please clean it."
// Handle it if you want. Library will continue scanning for the fingerprint after this callback.
}
@Override
public void authenticationCanceledByUser() {
// User canceled the authentication by tapping on the cancel button (which is at the bottom of the dialog).
}
@Override
public void onAuthenticationSucceeded() {
// Authentication success
// Your user is now authenticated.
}
@Override
public void onAuthenticationFailed() {
// Authentication failed.
// Library will continue scanning the fingerprint after this callback.
}
};
val callback = object : AuthenticationCallback {
override fun fingerprintAuthenticationNotSupported() {
// Device doesn't support fingerprint authentication. May be device doesn't have fingerprint hardware or device is running on Android below Marshmallow.
// Switch to alternate authentication method.
}
override fun hasNoFingerprintEnrolled() {
// User has no fingerprint enrolled.
// Application should redirect the user to the lock screen settings.
// FingerprintUtils.openSecuritySettings(this@SecureActivity)
}
override fun onAuthenticationError(errorCode: Int, errString: CharSequence?) {
// Unrecoverable error. Cannot use fingerprint scanner. Library will stop scanning for the fingerprint after this callback.
// Switch to alternate authentication method.
}
override fun onAuthenticationHelp(helpCode: Int, helpString: CharSequence?) {
// Authentication process has some warning. such as "Sensor dirty, please clean it."
// Handle it if you want. Library will continue scanning for the fingerprint after this callback.
}
override fun authenticationCanceledByUser() {
// User canceled the authentication by tapping on the cancel button (which is at the bottom of the dialog).
}
override fun onAuthenticationSucceeded() {
// Authentication success
// Your user is now authenticated.
}
override fun onAuthenticationFailed() {
// Authentication failed.
// Library will continue scanning the fingerprint after this callback.
}
}
dialogBuilder.show(getSupportFragmentanager(), callback);
dialogBuilder.show(supportFragmentManager, callback)
Authentication success | Authentication fail |
---|---|
Every small or large contribution to this project is appreciated. Make sure you read the contribution guide before generating the pull request.
Copyright 2018 Keval Patel
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.