此处的新手问题: 我无法在Firebase App上保存数据。为什么? 我正在使用Base64Custom来编码用户的电子邮件,但无法保存。我之前已经做过,但是现在可以了。
package com.example.eefad.aplicaoteste.activity.Activity;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Base64;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.example.eefad.aplicaoteste.R;
import com.example.eefad.aplicaoteste.activity.Config.ConfiguracaoFirebase;
import com.example.eefad.aplicaoteste.activity.helper.Base64Custom;
import com.example.eefad.aplicaoteste.activity.model.Usuario;
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;
import com.google.firebase.auth.FirebaseAuthInvalidCredentialsException;
import com.google.firebase.auth.FirebaseAuthUserCollisionException;
import com.google.firebase.auth.FirebaseAuthWeakPasswordException;
;
public class MainActivity extends AppCompatActivity {
private EditText campoNome, campoEmail, campoSenha;
private Button botaoCadastrar;
private Usuario usuario;
private FirebaseAuth autenticacao;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
campoNome = findViewById(R.id.editNome);
campoEmail = findViewById(R.id.editEmail);
campoSenha = findViewById(R.id.editSenha);
botaoCadastrar = findViewById(R.id.buttonCadastrar);
botaoCadastrar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String textoNome = campoNome.getText().toString();
String textoEmail = campoEmail.getText().toString();
String textoSenha = campoSenha.getText().toString();
//Validação do preenchimento dos campos.
if(!textoNome.isEmpty() ) {
if(!textoEmail.isEmpty()){
if(!textoSenha.isEmpty()){
usuario = new Usuario();
usuario.setNome(textoNome);
usuario.setEmail(textoEmail);
usuario.setSenha(textoSenha);
cadastrarUsuario();
}
}
}
}
});
}
public void cadastrarUsuario(){
autenticacao = ConfiguracaoFirebase.getFirebaseAutenticacao();
autenticacao.createUserWithEmailAndPassword(usuario.getEmail(), usuario.getSenha())
.addOnCompleteListener(this, new OnCompleteListener <AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful() ){
// String idUsuario = Base64Custom.codificarBase64(usuario.getEmail());
String idUsuario = usuario.getEmail();
usuario.setIdUsuario(idUsuario);
usuario.salvar();
verificaUsuarioLogado();
Toast.makeText(MainActivity.this, "Usuário Salvo com Sucesso", Toast.LENGTH_SHORT).show();
finish();
}else {
String excecao = "";
try {
throw task.getException();
}catch ( FirebaseAuthWeakPasswordException e){
excecao = "Digite uma senha mais forte!";
}catch ( FirebaseAuthInvalidCredentialsException e){
excecao= "Por favor, digite um e-mail válido";
}catch ( FirebaseAuthUserCollisionException e){
excecao = "Este conta já foi cadastrada";
}catch (Exception e){
excecao = "Erro ao cadastrar usuário: " + e.getMessage();
e.printStackTrace();
}
Toast.makeText(MainActivity.this, excecao, Toast.LENGTH_SHORT).show();
}
}
});
}
public void verificaUsuarioLogado(){
autenticacao = ConfiguracaoFirebase.getFirebaseAutenticacao();
if(autenticacao.getCurrentUser() !=null ) {
startActivity(new Intent(this, TelaCadastro.class));
}
}
}
我正在使用Getters和setter返回数据,并且我创建了一个方法调用salvar来保存在数据库中。
package com.example.eefad.aplicaoteste.activity.model;
import com.example.eefad.aplicaoteste.activity.Config.ConfiguracaoFirebase;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.Exclude;
public class Usuario {
private String idUsuario;
private String nome;
private String email;
private String senha;
public Usuario() {
}
public void salvar(){
DatabaseReference firebase = ConfiguracaoFirebase.getFirebaseDatabase();
firebase.child("usuarios")
.child(this.idUsuario)
.setValue(this);
}
@Exclude
public String getIdUsuario() {
return idUsuario;
}
public void setIdUsuario(String idUsuario) {
this.idUsuario = idUsuario;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Exclude
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
}
我不知道我在做什么错。我一直试图保存电子邮件,但是使用该结构似乎是不可能的。