How to change the Signed in Phone Number in Firebase Authentication for Android?

    val options = PhoneAuthOptions.newBuilder(FirebaseAuth.getInstance())
            .setPhoneNumber(phoneNumber) // Phone number to verify
            .setTimeout(100L, TimeUnit.SECONDS) // Timeout and unit
            .setActivity(activity) // Activity (for callback binding)
            .setCallbacks(returnCallBack()) // OnVerificationStateChangedCallbacks
            .build()

 PhoneAuthProvider.verifyPhoneNumber(options)

private fun returnCallBack() = object : PhoneAuthProvider
    .OnVerificationStateChangedCallbacks() {

        override fun onVerificationCompleted(credential: PhoneAuthCredential) {
            FirebaseAuth.getCurrentUser()?.updatePhoneNumber(credential)
        }

        override fun onVerificationFailed(e: FirebaseException) {
            // This callback is invoked in an invalid request for verification is made,
            // for instance if the the phone number format is not valid.
            Log.e("phone",  e.toString())

        }

        override fun onCodeSent(verificationId: String, token: PhoneAuthProvider.ForceResendingToken) {
            //You need this to pass as a parameter for the update method call.
            vericationSent = verificationId
        }
    }   

 fun confirmChange(code: String, context: Context?) {
        if(code.contains(Regex(onlyNumber))) {
            Log.d("codeSent" , "Right code : $code")

            FirebaseAuth.getCurrentUser()
                ?.updatePhoneNumber(PhoneAuthProvider.getCredential(vericationSent, code))
                ?.addOnCompleteListener {task ->
                    //it worked if you reach here.

                }?.addOnFailureListener {
                    //Show the error to user
                    }
                }

            vericationSent = EMPTY
        } else {
            Log.d("codeSent" , "wrong code : $code")
        }

    }

I also had this challenge to update user phone number and when I go on documentation I got something by using I have done this task.

you can go for documentation by click here

Now the method you can use : - for java android project.

PhoneAuthCredential phoneAuthCredential = PhoneAuthProvider.getCredential( "+91-98298XXXX2", "OTP_CODE" );
// Update Mobile Number...
firebaseAuth.getCurrentUser().updatePhoneNumber(phoneAuthCredential)
    .addOnCompleteListener(new OnCompleteListener <Void>() {
        @Override
        public void onComplete(@NonNull Task <Void> task) {
            if (task.isSuccessful()) {
                // Update Successfully
            } else {
                // Failed
            }
        }
    }
);

Try this

//Send otp to phone number

String verificationId;
private void startLoginFirebase(){
    PhoneAuthProvider.getInstance(firebaseAuth).verifyPhoneNumber(phone, 90L, TimeUnit.SECONDS, PhoneAuthActivity.this, new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
        @Override
        public void onCodeSent(@NonNull String s, @NonNull PhoneAuthProvider.ForceResendingToken forceResendingToken) {
            super.onCodeSent(s, forceResendingToken);
            verificationId = s;
            updatePhoneNum();
        }

        @Override
        public void onCodeAutoRetrievalTimeOut(@NonNull String s) {
            super.onCodeAutoRetrievalTimeOut(s);
        }

        @Override
        public void onVerificationCompleted(@NonNull PhoneAuthCredential phoneAuthCredential) {

        }

        @Override
        public void onVerificationFailed(@NonNull FirebaseException e) {
            processFurther(e.getLocalizedMessage().toString(), 0);
        }
    });
}


//Verify Otp

private void updatePhoneNum(){
    PhoneAuthCredential phoneAuthCredential = PhoneAuthProvider.getCredential(verificationId, otp);
    firebaseAuth.getCurrentUser().updatePhoneNumber(phoneAuthCredential).addOnCompleteListener(new OnCompleteListener<Void>() {
        @Override
        public void onComplete(@NonNull Task<Void> task) {

        }
    });
}

An API exists for updating the phone number of a current user: FirebaseUser#updatePhoneNumber(PhoneAuthCredential credential)