FingerprintManager 클래스가 deprecated 된 후 대체방안이다
여기에 구현방법이 있다.
이제는 지문인식용 클래스를 따로 빼는 게 아니라 생체정보 인증 자체를 하나의 클래스로 묶어서 다루려고 하는 것 같다.
그래서 BIOMETRIC이라는 키워드 자체로 묶였다.
Manifest 권한 추가하기
먼저, 내 앱에 생체인증을 할 수 있는 권한을 주자
<!-- 지문 인식 권한 -->
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
위의 권한을 추가하면 된다.
dependency 추가하기
implementation 'androidx.biometric:biometric:1.0.1'
위와 같이 androidx.biometric 을 추가해주면 된다.
지문인식에 이용할 Activity Layout 구성하기
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="20dp"
android:text="지문 인증하기"
android:textSize="30dp"
android:gravity="center"
android:id="@+id/buttonAuthWithFingerprint"
/>
</LinearLayout>
위와 같이 구성했다.
지문인식에 이용할 Activity 구성하기
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.biometric.BiometricPrompt;
import androidx.core.content.ContextCompat;
import java.util.concurrent.Executor;
public class AuthFingerprintActivity extends AppCompatActivity {
private Executor executor;
private BiometricPrompt biometricPrompt;
private BiometricPrompt.PromptInfo promptInfo;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_auth_fingerprint );
executor = ContextCompat.getMainExecutor(this);
biometricPrompt = new BiometricPrompt(this,
executor, new BiometricPrompt.AuthenticationCallback() {
@Override
public void onAuthenticationError(int errorCode,
@NonNull CharSequence errString) {
super.onAuthenticationError(errorCode, errString);
Toast.makeText(getApplicationContext(),
R.string.auth_error_message, Toast.LENGTH_SHORT)
.show();
}
@Override
public void onAuthenticationSucceeded(
@NonNull BiometricPrompt.AuthenticationResult result) {
super.onAuthenticationSucceeded(result);
Toast.makeText(getApplicationContext(),
R.string.auth_success_message, Toast.LENGTH_SHORT).show();
}
@Override
public void onAuthenticationFailed() {
super.onAuthenticationFailed();
Toast.makeText(getApplicationContext(), R.string.auth_fail_message,
Toast.LENGTH_SHORT)
.show();
}
});
promptInfo = new BiometricPrompt.PromptInfo.Builder()
.setTitle("지문 인증")
.setSubtitle("기기에 등록된 지문을 이용하여 지문을 인증해주세요.")
.setNegativeButtonText("취소")
.setDeviceCredentialAllowed(false)
.build();
// 사용자가 다른 인증을 이용하길 원할 때 추가하기
Button biometricLoginButton = findViewById(R.id.buttonAuthWithFingerprint);
biometricLoginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
biometricPrompt.authenticate(promptInfo);
}
});
}
}
이건 뭐 그냥 공식문서 복붙하면 된다.
프롬프트를 빌드할 때 사용되는 세부적인 옵션들은 여기에 있다.
결과
'프로그래밍 > Android' 카테고리의 다른 글
[Android] SQLite 사용법 정리 (0) | 2022.12.29 |
---|---|
[Android] XML에서 자동완성이 되지 않을경우 해결법 (0) | 2022.12.29 |
[Android] *.db 파일 넣기 (SQLite) (0) | 2022.12.12 |
[Android] 반복되는 레이아웃 재사용 (include 태그) (0) | 2022.12.09 |
[Kotlin] 코드 실행시간 측정 (0) | 2022.12.06 |
댓글