Firebase, quando saber se ja existe cadastro

tenho este código na main, é só para efetuar um cadastro.

package br.com.deniscarvasilva.hello;

import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;

public class MainActivity extends AppCompatActivity {
    private FirebaseAuth mAuth;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mAuth = FirebaseAuth.getInstance();
        createUser();
    }

    public void createUser(){
        String email = "denis@denis.com.com";
        String password = "42378942";
        mAuth.createUserWithEmailAndPassword(email, password)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {
                            Toast.makeText(MainActivity.this, "Deu certo",
                                    Toast.LENGTH_SHORT).show();
                        } else {
                            Toast.makeText(MainActivity.this, "Nao deu certo",
                                    Toast.LENGTH_SHORT).show();
                        }
                    }
                });
    }
}
  • agora, como ja tem um usuário com este login e senha, não tem como eu rodar mais uma vez e cadastrar um novo usuário, até ai ok. Mas como vou saber o porque não foi criado?

  • Como eu posso enviar a mensagem para o usuário, conta já esta sendo utilizada! ou e-mail ja utilizado, lembrar senha? esse tipo de coisa.

Quando você tenta criar e ocorre algum erro, o objeto task traz as informações de exceção.

if(!task.isSuccessful()) {
    try {
        throw task.getException();
    } catch(FirebaseAuthWeakPasswordException e) {
        mTxtPassword.setError(getString(R.string.error_weak_password));
        mTxtPassword.requestFocus();
    } catch(FirebaseAuthInvalidCredentialsException e) {
        mTxtEmail.setError(getString(R.string.error_invalid_email));
        mTxtEmail.requestFocus();
    } catch(FirebaseAuthUserCollisionException e) {
        mTxtEmail.setError(getString(R.string.error_user_exists));
        mTxtEmail.requestFocus();
    } catch(Exception e) {
        Log.e(TAG, e.getMessage());
    }
}

Acho que cobre todas as possibilidades, mas, dê uma olhada na documentação, talvez tenha mudado algo.
Retirei daqui

obrigado

Detalhe importante. Como eu disse, fiz esses passos semanas atrás:
FirebaseAuthWeakPasswordException: Quando a senha é muito curta (acho que sequencial também, tipo 1234)
FirebaseAuthInvalidCredentialsException: Quando o email é inválido
FirebaseAuthUserCollisionException: Quando o usuário já está cadastrado

Agora, se bem me recordo, tive problemas com a questão da validação da senha. A exceção lançada era uma simples Exception, apenas contendo uma String dizendo que a senha era fraca.

ja ajuda muito