Я пытаюсь реализовать аутентификацию телефона в android с использованием firebase. Здесь, когда я пытаюсь войти под другим номером мобильного телефона, а затем в editText, когда я нажимаю, он показывает «Код автозаполнения из сообщений». Если я нажму кнопку автозаполнения, то клавиатура перестанет отображаться, и после моего постоянного нажатия на этот текст редактирования даже не будет выведена клавиатура для входа. Пожалуйста помоги. Вот код, связанный:
public class otpVerification extends AppCompatActivity {
private String mVerificationId;
private FirebaseAuth mAuth;
private ProgressBar progressBar;
private TextView resend;
private EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_otp_verification);
mAuth = FirebaseAuth.getInstance();
progressBar = (findViewById(R.id.progressbar));
editText = (findViewById(R.id.editTextCode));
resend = findViewById(R.id.resend);
final String mobile = getIntent().getStringExtra("mobile");
sendVerificationCode(mobile);
findViewById(R.id.buttonSignIn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String code = editText.getText().toString();
if (code.isEmpty() || code.length() < 6) {
progressBar.setVisibility(View.INVISIBLE);
editText.setEnabled(true);
editText.setError("Enter code manually");
editText.requestFocus();
return;
} else if (code.replace(" ", "").length() != 6) {
progressBar.setVisibility(View.INVISIBLE);
Toast.makeText(otpVerification.this, "Enter correct OTP", Toast.LENGTH_SHORT).show();
} else {
//verifying the code
verifyVerificationCode(code);
}
}
});
resend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sendVerificationCode(mobile);
}
});
}
private void verifyVerificationCode(String otp) {
progressBar.setVisibility(View.VISIBLE);
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(mVerificationId, otp);
signInWithPhoneAuthCredential(credential);
}
private void signInWithPhoneAuthCredential(PhoneAuthCredential credential) {
mAuth.signInWithCredential(credential)
.addOnCompleteListener(otpVerification.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
//verification successful we will start the profile activity
Intent intent = new Intent(otpVerification.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();
} else {
Toast.makeText(otpVerification.this, "Verification failed", Toast.LENGTH_SHORT).show();
}
}
});
}
private void sendVerificationCode(String mobile) {
progressBar.setVisibility(View.VISIBLE);
new CountDownTimer(30000, 1000) {
@Override
public void onTick(long l) {
resend.setText("" + l / 1000);
resend.setEnabled(false);
editText.setEnabled(true);
}
@Override
public void onFinish() {
progressBar.setVisibility(View.INVISIBLE);
resend.setText(" Resend");
resend.setEnabled(true);
editText.setEnabled(true);
}
}.start();
PhoneAuthProvider.getInstance().verifyPhoneNumber(
"+91" + mobile,
60,
TimeUnit.SECONDS,
TaskExecutors.MAIN_THREAD,
mCallbacks);
}
private PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
@Override
public void onCodeSent(String s, PhoneAuthProvider.ForceResendingToken forceResendingToken) {
super.onCodeSent(s, forceResendingToken);
mVerificationId = s;
}
@Override
public void onVerificationCompleted(@NonNull PhoneAuthCredential phoneAuthCredential) {
String code = phoneAuthCredential.getSmsCode();
if (code != null) {
editText.setText(code);
verifyVerificationCode(code);
}
}
@Override
public void onVerificationFailed(@NonNull FirebaseException e) {
Toast.makeText(otpVerification.this, e.getMessage(), Toast.LENGTH_LONG).show();
}
};
}