지문 스캐너를 사용하여 사용자를 인증하는 방법

user3126480

비밀번호를 저장하기 위해 개인 Android 앱을 개발하고 있습니다. (마지막 패스는 모바일로 지불되므로). 현재 사용 simple password authentication하고 있지만 fingerprint scanner.

파일 AndroidManifest.xml:

<uses-permission android:name="android.permission.USE_FINGERPRINT" />

파일 MainActivity.java:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//Fingerprint API only available on from Android 6.0 (M)
FingerprintManager fingerprintManager = (FingerprintManager) context.getSystemService(Context.FINGERPRINT_SERVICE);
if (!fingerprintManager.isHardwareDetected()) { 
    // Device doesn't support fingerprint authentication     
} else if (!fingerprintManager.hasEnrolledFingerprints()) { 
    // User hasn't enrolled any fingerprints to authenticate with 
} else { 
    // Everything is ready for fingerprint authentication 
}
}

하지만 실제로 어떻게 authenticate전화 소유자를 사용 fingerprints합니까?

최신 정보:

나는 Lubomir Babev의 대답과 그 완벽을 사용했습니다. onAuthSucceded를 구현하는 두 가지 메서드를 채 웁니다. onAuthFailed는 인증이 성공하면 처리 할 수 ​​없었고 Android 스튜디오가 저를 만들었 기 때문에 권한 검사도 추가해야했습니다.

public void startListening() {
    if (isFingerScannerAvailableAndSet()) {
        try {
            if (ActivityCompat.checkSelfPermission(mContext.getApplicationContext(), Manifest.permission.USE_FINGERPRINT) != PackageManager.PERMISSION_GRANTED) {
            }
            mFingerprintManager.authenticate(null, mCancellationSignal, 0 /* flags */, mAuthenticationCallback, null);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 public void startListening() {
    if (isFingerScannerAvailableAndSet()) {
        try {
            if (ActivityCompat.checkSelfPermission(mContext.getApplicationContext(), Manifest.permission.USE_FINGERPRINT) != PackageManager.PERMISSION_GRANTED) {
            }
            mFingerprintManager.authenticate(null, mCancellationSignal, 0 /* flags */, mAuthenticationCallback, null);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
루보 미르 바 베프

지문 이벤트에 대한 사용자 지정 처리기 클래스를 만듭니다.

import android.content.Context;
import android.hardware.fingerprint.FingerprintManager;
import android.os.Build;
import android.os.CancellationSignal;

public class FingerprintHandler {
    private Context                                     mContext;
    private FingerprintManager                          mFingerprintManager = null;
    private CancellationSignal                          mCancellationSignal;
    private FingerprintManager.AuthenticationCallback   mAuthenticationCallback;
    private OnAuthenticationSucceededListener           mSucceedListener;
    private OnAuthenticationErrorListener               mFailedListener;

    public interface OnAuthenticationSucceededListener {
        void onAuthSucceeded();
    }

    public interface OnAuthenticationErrorListener {
        void onAuthFailed();
    }

    public void setOnAuthenticationSucceededListener (OnAuthenticationSucceededListener listener){
        mSucceedListener = listener;
    }

    public void setOnAuthenticationFailedListener(OnAuthenticationErrorListener listener) {
        mFailedListener = listener;
    }

    public FingerprintHandler(Context context){
        mContext = context;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            mFingerprintManager = context.getSystemService(FingerprintManager.class);
            mCancellationSignal = new CancellationSignal();

            mAuthenticationCallback = new FingerprintManager.AuthenticationCallback() {
                @Override
                public void onAuthenticationError(int errorCode, CharSequence errString) {
                    super.onAuthenticationError(errorCode, errString);
                }

                @Override
                public void onAuthenticationHelp(int helpCode, CharSequence helpString) {
                    super.onAuthenticationHelp(helpCode, helpString);
                }

                @Override
                public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) {
                    super.onAuthenticationSucceeded(result);
                    if( mSucceedListener != null )
                        mSucceedListener.onAuthSucceeded();
                }

                @Override
                public void onAuthenticationFailed() {
                    super.onAuthenticationFailed();
                    if (mFailedListener != null)
                        mFailedListener.onAuthFailed();
                }
            };
        }
    }

    public void startListening(){
        if (isFingerScannerAvailableAndSet() ) {
            try{
                mFingerprintManager.authenticate(null, mCancellationSignal, 0 /* flags */, mAuthenticationCallback, null);
            } catch (Exception e){
                e.printStackTrace();
            }
        }
    }

    public void stopListening(){
        if ( isFingerScannerAvailableAndSet() ) {
            try {
                mCancellationSignal.cancel();
                mCancellationSignal = null;
            } catch (Exception e){
                e.printStackTrace();
            }
        }
    }

    public boolean isFingerScannerAvailableAndSet(){
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M)
            return false;
        if( mFingerprintManager == null )
            return false;
        if( !mFingerprintManager.isHardwareDetected() )
            return false;
        if( !mFingerprintManager.hasEnrolledFingerprints())
            return false;

        return true;
    }
}

그런 다음 활동에서

FingerprintHandler.OnAuthenticationSucceededListener, FingerprintHandler.OnAuthenticationErrorListener

지문 매개 변수 생성 :

private FingerprintHandler mFingerprintHandler;

그 후 onCreate 메서드에서이 지문 처리기를 초기화합니다.

mFingerprintHandler = new FingerprintHandler(this);
mFingerprintHandler.setOnAuthenticationSucceededListener(this);
mFingerprintHandler.setOnAuthenticationFailedListener(this);

다음을 사용하여 지문을 사용할 수 있는지 확인하고 활동에 설정할 수 있습니다.

    if( mFingerprintHandler.isFingerScannerAvailableAndSet() ){
        // show image or text or do something 
    }

구현 된 방법으로 지문 응답을 처리 할 수 ​​있습니다.

@Override
public void onAuthSucceeded() {
     //fingerprint auth succeded go to next activity (or do something)
}


@Override
public void onAuthFailed() {
    //fingerpring auth failed, show error toast (or do something)
}

그리고 당신은 준비되었습니다! :) onPause 및 onResume 메서드에서 지문 인식을 중지하고 시작하는 것을 잊지 마십시오.

@Override
public void onResume() {
    super.onResume();
    mFingerprintHandler.startListening();
}

@Override
public void onPause() {
    super.onPause();
    mFingerprintHandler.stopListening();
}

해피 코딩 :)))

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Android 장치 인증 지문 스캐너를 사용하여 지문 이미지를 생성하는 방법 / 다른 옵션은 무엇입니까?

분류에서Dev

스캐너를 사용하여 문자열 이름을 늘리는 방법, Java에서 while 및 for 루프

분류에서Dev

스캐너를 사용하여 문자열 읽기 이해

분류에서Dev

Java에서 스캐너를 사용하여 문자 무시

분류에서Dev

Java에서 스캐너 클래스 또는 기타를 사용하여 문자열 배열을 읽고 사용하는 방법

분류에서Dev

스캐너를 사용하여 텍스트 파일을 두 부분으로 구문 분석하는 방법

분류에서Dev

NodeJS를 사용하여 Podio에서 사용자로 인증하는 방법

분류에서Dev

루프를 사용하여 문자열의 모든 문자가 대문자인지 확인하는 방법

분류에서Dev

람다를 "개발자 인증 ID"로 사용하여 사용자 지정 인증 흐름을 제공하는 방법은 무엇입니까?

분류에서Dev

feh를 사용하여 자체 서명 된 인증서로 웹 이미지를 여는 방법

분류에서Dev

연결 끊김 : 비밀번호를 사용하여 인증하는 sudo 사용자에 대해 지원되는 인증 방법이 없습니다.

분류에서Dev

구분 계 스위치를 사용하여 스캐너를 만드는 방법

분류에서Dev

Java를 사용하여 mongodb에서 문서를 사용하여 "$ or"연산자를 사용하는 방법

분류에서Dev

Swift를 사용하여 인증되지 않은 신원을 얻는 방법

분류에서Dev

삼항 연산자를 사용하여 if 문에서 AND를 사용하는 방법

분류에서Dev

Windows 사용자를 지정하는 Windows 인증을 사용하여 ASP에서 MS SQL Server 데이터베이스에 연결하는 방법

분류에서Dev

포인터를 사용하여 문자열을 슬라이스하는 방법

분류에서Dev

AWS Lambda를 사용하여 CloudWatch 지표를 사용자 지정하는 방법

분류에서Dev

vba를 사용하여 문자열의 일부를 유지하는 방법

분류에서Dev

swift : mongoDB Realm 데이터베이스 및 인증을 사용하여 iOS 사용자를 로그인 상태로 유지하는 방법

분류에서Dev

Swift를 사용하여 문자열 값이 배열에 있는지 여부를 확인하는 방법

분류에서Dev

스프링 보안을 사용하여 인덱스 페이지를 인증하는 방법

분류에서Dev

Java에서 스캐너 클래스를 사용하는 방법

분류에서Dev

자바. 스캐너를 사용하여 정수 값을 문자열로 변환

분류에서Dev

HashMap을 사용하여 데이터를 읽은 후 자격 증명이 특정 사용자의 것인지 확인하는 방법은 무엇입니까?

분류에서Dev

Finite Automaton을 사용하여 스캐너를 구현하는 방법

분류에서Dev

sed를 사용하여 문자열을 추출하는 방법

분류에서Dev

PHP를 사용하여 특정 문자를 찾는 방법

분류에서Dev

Regex를 사용하여 NULL 문자를 바꾸는 방법?

Related 관련 기사

  1. 1

    Android 장치 인증 지문 스캐너를 사용하여 지문 이미지를 생성하는 방법 / 다른 옵션은 무엇입니까?

  2. 2

    스캐너를 사용하여 문자열 이름을 늘리는 방법, Java에서 while 및 for 루프

  3. 3

    스캐너를 사용하여 문자열 읽기 이해

  4. 4

    Java에서 스캐너를 사용하여 문자 무시

  5. 5

    Java에서 스캐너 클래스 또는 기타를 사용하여 문자열 배열을 읽고 사용하는 방법

  6. 6

    스캐너를 사용하여 텍스트 파일을 두 부분으로 구문 분석하는 방법

  7. 7

    NodeJS를 사용하여 Podio에서 사용자로 인증하는 방법

  8. 8

    루프를 사용하여 문자열의 모든 문자가 대문자인지 확인하는 방법

  9. 9

    람다를 "개발자 인증 ID"로 사용하여 사용자 지정 인증 흐름을 제공하는 방법은 무엇입니까?

  10. 10

    feh를 사용하여 자체 서명 된 인증서로 웹 이미지를 여는 방법

  11. 11

    연결 끊김 : 비밀번호를 사용하여 인증하는 sudo 사용자에 대해 지원되는 인증 방법이 없습니다.

  12. 12

    구분 계 스위치를 사용하여 스캐너를 만드는 방법

  13. 13

    Java를 사용하여 mongodb에서 문서를 사용하여 "$ or"연산자를 사용하는 방법

  14. 14

    Swift를 사용하여 인증되지 않은 신원을 얻는 방법

  15. 15

    삼항 연산자를 사용하여 if 문에서 AND를 사용하는 방법

  16. 16

    Windows 사용자를 지정하는 Windows 인증을 사용하여 ASP에서 MS SQL Server 데이터베이스에 연결하는 방법

  17. 17

    포인터를 사용하여 문자열을 슬라이스하는 방법

  18. 18

    AWS Lambda를 사용하여 CloudWatch 지표를 사용자 지정하는 방법

  19. 19

    vba를 사용하여 문자열의 일부를 유지하는 방법

  20. 20

    swift : mongoDB Realm 데이터베이스 및 인증을 사용하여 iOS 사용자를 로그인 상태로 유지하는 방법

  21. 21

    Swift를 사용하여 문자열 값이 배열에 있는지 여부를 확인하는 방법

  22. 22

    스프링 보안을 사용하여 인덱스 페이지를 인증하는 방법

  23. 23

    Java에서 스캐너 클래스를 사용하는 방법

  24. 24

    자바. 스캐너를 사용하여 정수 값을 문자열로 변환

  25. 25

    HashMap을 사용하여 데이터를 읽은 후 자격 증명이 특정 사용자의 것인지 확인하는 방법은 무엇입니까?

  26. 26

    Finite Automaton을 사용하여 스캐너를 구현하는 방법

  27. 27

    sed를 사용하여 문자열을 추출하는 방법

  28. 28

    PHP를 사용하여 특정 문자를 찾는 방법

  29. 29

    Regex를 사용하여 NULL 문자를 바꾸는 방법?

뜨겁다태그

보관