You can use the following with all activities, such as verification and confirmation by email.
Variable declaration
// Widgets private EditText etOldEmail, etNewEmail; private Button btnChangeEmail; // Firebase private FirebaseAuth mAuth; private FirebaseUser fbUser;
Oncreate
Function for changing email address
private void changeEmailAddress() { String oldEmail = etOldEmail.getText().toString(); String newEmail = etNewEmail.getText().toString(); if (TextUtils.isEmpty(oldEmail)) { Toast.makeText(mContext, "Please Enter Your Old Email", Toast.LENGTH_SHORT).show(); } else if (TextUtils.isEmpty(newEmail)) { Toast.makeText(mContext, "Please Enter Your New Email", Toast.LENGTH_SHORT).show(); } else { String email = fbUser.getEmail(); if (!oldEmail.equals(email)) { Toast.makeText(mContext, "Wrong Current Email, Please Check Again", Toast.LENGTH_SHORT).show(); } else { fbUser.updateEmail(newEmail).addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { fbUser.sendEmailVerification().addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { Toast.makeText(mContext, "Verification Email Sent To Your Email.. Please Verify and Login", Toast.LENGTH_LONG).show(); // Logout From Firebase FirebaseGeneral firebaseGeneral = new FirebaseGeneral(); firebaseGeneral.logoutUser(mContext); } }); } else { try { throw Objects.requireNonNull(task.getException()); } // Invalid Email catch (FirebaseAuthInvalidCredentialsException malformedEmail) { Toast.makeText(mContext, "Invalid Email...", Toast.LENGTH_LONG).show(); } // Email Already Exists catch (FirebaseAuthUserCollisionException existEmail) { Toast.makeText(mContext, "Email Used By Someone Else, Please Give Another Email...", Toast.LENGTH_LONG).show(); } // Any Other Exception catch (Exception e) { Toast.makeText(mContext, e.getMessage(), Toast.LENGTH_LONG).show(); } } } }); } } }
source share