I am trying to attach my application with firebase via Phone number otp. When i enter testing number in my main Activity then app move to OTPActivity but when i enter the testing otp my application crash here i am attaching the manifest and java code of my otpactivity
here is the code of manifest.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.heybuddy">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:usesCleartextTraffic="true"
android:supportsRtl="true"
android:theme="@style/Theme.HeyBuddy">
<activity android:name=".OtpActivity"></activity>
<activity android:name=".SignupActivity" />
<activity android:name=".SigninActivity" />
<activity android:name=".SplashScreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
here is the java code of otpActivity.
package com.example.heybuddy;
public class OtpActivity extends AppCompatActivity {
TextView textView;
FirebaseAuth auth;
String verification;
OtpView otpView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_otp);
textView = findViewById(R.id.numberLbl);
otpView = findViewById(R.id.otp_view);
Intent intent = getIntent();
String number = intent.getStringExtra("phoneNumber");
textView.setText("Please verify " + number);
auth = FirebaseAuth.getInstance();
PhoneAuthOptions options = PhoneAuthOptions.newBuilder(auth)
.setPhoneNumber(number)
.setTimeout(60L, TimeUnit.SECONDS)
.setActivity(OtpActivity.this)
.setCallbacks(new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
@Override
public void onVerificationCompleted(@NonNull PhoneAuthCredential phoneAuthCredential) {
}
@Override
public void onVerificationFailed(@NonNull FirebaseException e) {
}
@Override
public void onCodeSent(@NonNull String verifyId, @NonNull PhoneAuthProvider.ForceResendingToken forceResendingToken) {
super.onCodeSent(verifyId, forceResendingToken);
verification = verifyId;
}
}).build();
PhoneAuthProvider.verifyPhoneNumber(options);
otpView.setOtpCompletionListener(new OnOtpCompletionListener() {
@Override
public void onOtpCompleted(String otp) {
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verification, otp);
auth.signInWithCredential(credential).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()){
Toast.makeText(OtpActivity.this, "Verified Successfully.", Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(OtpActivity.this, "Failed.", Toast.LENGTH_SHORT).show();
}
}
});
}
});
}
}
here is the logcat of application
com.google.android.gms.common.internal.Preconditions.checkArgument(com.google.android.gms:play-services-basement@@17.1.0:35)
at com.google.firebase.auth.PhoneAuthCredential.<init>(com.google.firebase:firebase-auth@@20.0.4:6)
at com.google.firebase.auth.PhoneAuthCredential.zzb(com.google.firebase:firebase-auth@@20.0.4:1)
at com.google.firebase.auth.PhoneAuthProvider.getCredential(com.google.firebase:firebase-auth@@20.0.4:1)
at com.example.heybuddy.OtpActivity$2.onOtpCompleted(OtpActivity.java:67)
at com.mukesh.OtpView.onTextChanged(OtpView.java:227)
at android.widget.TextView.handleTextChanged(TextView.java:10626)
at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:13375)
at android.text.SpannableStringBuilder.sendTextChanged(SpannableStringBuilder.java:1267)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:576)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:507)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:37)
at android.text.method.NumberKeyListener.onKeyDown(NumberKeyListener.java:131)
at android.widget.TextView.doKeyDown(TextView.java:8430)
at android.widget.TextView.onKeyDown(TextView.java:8187)
at android.view.KeyEvent.dispatch(KeyEvent.java:2801)
at android.view.View.dispatchKeyEvent(View.java:13352)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1922)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1922)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1922)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1922)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1922)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1922)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1922)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1922)
at com.android.internal.policy.DecorView.superDispatchKeyEvent(DecorView.java:453)
at com.android.internal.policy.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1839)
at android.app.Activity.dispatchKeyEvent(Activity.java:3953)
at androidx.core.app.ComponentActivity.superDispatchKeyEvent(ComponentActivity.java:122)
at androidx.core.view.KeyEventDispatcher.dispatchKeyEvent(KeyEventDispatcher.java:84)
at androidx.core.app.ComponentActivity.dispatchKeyEvent(ComponentActivity.java:140)
at androidx.appcompat.app.AppCompatActivity.dispatchKeyEvent(AppCompatActivity.java:569)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:59)
at androidx.appcompat.app.AppCompatDelegateImpl$AppCompatWindowCallback.dispatchKeyEvent(AppCompatDelegateImpl.java:3054)
at com.android.internal.policy.DecorView.dispatchKeyEvent(DecorView.java:367)
at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:5413)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5281)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4788)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4841)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4807)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4947)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4815)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5004)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4788)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4841)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4807)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4815)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4788)
2021-04-14 02:38:38.418 14174-14174/com.example.heybuddy E/AndroidRuntime: at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4841)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4807)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4980)
at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:5141)
at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:3064)
at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:2607)
at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:2598)
at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:3041)
at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:143)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:336)
at android.os.Looper.loop(Looper.java:174)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)