Solución:
este método funciona para comprobar si el correo electrónico existía o no
void checkEmailExistsOrNot(){
firebaseauth.fetchSignInMethodsForEmail(email.getText().toString()).addOnCompleteListener(new OnCompleteListener<SignInMethodQueryResult>() {
@Override
public void onComplete(@NonNull Task<SignInMethodQueryResult> task) {
Log.d(TAG,""+task.getResult().getSignInMethods().size());
if (task.getResult().getSignInMethods().size() == 0){
// email not existed
}else {
// email existed
}
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
e.printStackTrace();
}
});
}
fetchProvidersForEmail es una llamada asíncrona, por lo que debe hacer uso de su valor de retorno con la devolución de llamada.
return true en el hilo principal no funcionará.
Esta es la solucion:
Primero crea una interfaz con el método (éxito)
public interface OnEmailCheckListener(){
void onSuccess(boolean isRegistered);
}
Su método checkEmail debería ser así:
public void isCheckEmail(final String email,final OnEmailCheckListener listener){
mAuth.fetchProvidersForEmail(email).addOnCompleteListener(new OnCompleteListener<ProviderQueryResult>()
{
@Override
public void onComplete(@NonNull Task<ProviderQueryResult> task)
{
boolean check = !task.getResult().getProviders().isEmpty();
listener.onSuccess(check);
}
});
}
Finalmente llame a su isCheckEmail así:
isCheckEmail("[email protected]",new OnEmailCheckListener(){
@Override
void onSuccess(boolean isRegistered){
if(isRegistered){
//The email was registered before
} else {
//The email not registered before
}
}
});
Espero que esto te ayude.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)