Клавиатура не появляется при аутентификации телефона с использованием firebase в android studio после того, как я нажму на автозаполнение из сообщения в моем телефоне чести - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь реализовать аутентификацию телефона в 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();
    }
};
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...