У меня есть приложение, в котором пользователи могут войти и зарегистрироваться. Приложение работает отлично, но теперь я хочу улучшить свое приложение. Я хочу сохранить данные для входа в систему, и когда пользователь снова захочет войти в систему, приложение будет входить в систему с защитой телефона, например, с помощью шаблона, булавки или блокировки пальцев . Но я понятия не имею, как этого добиться. Любые предложения или какой-то простой код?
У меня есть этот код для аутентификации пользователя с номером:
public class MainActivity extends AppCompatActivity {
Button btnSendcode;
Button btnVerifycode;
EditText verificationCode,phoneNumber;
FirebaseAuth mAuth;
String CodeSend;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnSendcode = findViewById(R.id.btnSendCode);
btnVerifycode = findViewById(R.id.btnVerifyCode);
verificationCode = findViewById(R.id.txtVerificatoinCode);
phoneNumber = findViewById(R.id.txtPhoneNumber);
mAuth = FirebaseAuth.getInstance();
btnSendcode.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SendCode();
}
});
btnVerifycode.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
VerifyCode();
}
});
}
private void VerifyCode(){
String code = verificationCode.getText().toString();
if(code.isEmpty())
{
verificationCode.setError("Verification Code Required!");
verificationCode.requestFocus();
return;
}
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(CodeSend, code);
signInWithPhoneAuthCredential(credential);
}
private void signInWithPhoneAuthCredential(PhoneAuthCredential credential) {
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Toast.makeText(getApplication(),"Logged In",Toast.LENGTH_LONG).show();
} else {
if (task.getException() instanceof FirebaseAuthInvalidCredentialsException) {
// The verification code entered was invalid
Toast.makeText(getApplication(),"Invailed Code Try Again",Toast.LENGTH_LONG).show();
}
}
}
});
}
private void SendCode(){
String phone = phoneNumber.getText().toString();
if(phone.isEmpty())
{
phoneNumber.setError("Phone Number Require!");
phoneNumber.requestFocus();
return;
}
PhoneAuthProvider.getInstance().verifyPhoneNumber(
phone, // Phone number to verify
60, // Timeout duration
TimeUnit.SECONDS, // Unit of timeout
this, // Activity (for callback binding)
mCallbacks); // OnVerificationStateChangedCallbacks
}
PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
@Override
public void onVerificationCompleted(@NonNull PhoneAuthCredential phoneAuthCredential) {
}
@Override
public void onVerificationFailed(@NonNull FirebaseException e) {
}
@Override
public void onCodeSent(@NonNull String s, @NonNull PhoneAuthProvider.ForceResendingToken forceResendingToken) {
super.onCodeSent(s, forceResendingToken);
CodeSend = s;
}
};
}