firebase能接收到传递的信息但一直不给出反应 停留在用户信息保存上
package com.example.bookapp;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Patterns;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.Toast;
import com.example.bookapp.databinding.ActivityRegisterBinding;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import java.util.HashMap;
public class RegisterActivity extends AppCompatActivity {
//查看binding
private ActivityRegisterBinding binding;
// firebase验证
private FirebaseAuth firebaseAuth;
//progress dialog
private ProgressDialog progressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityRegisterBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
//init firebase auth
firebaseAuth = FirebaseAuth.getInstance();
//设置setup progress dialog
progressDialog = new ProgressDialog(this);
progressDialog.setTitle("稍等");
progressDialog.setCanceledOnTouchOutside(false);
//点击之后,返回
binding.backBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onBackPressed();
}
});
//处理点击,开始注册
binding.registerBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
validateDate();
}
});
//添加fire base以下依赖项
//firebase认证
//firebase实时数据库
//firebase存储
}
private String name ="",email = "",password="";
private void validateDate() {
/*在创建账户之前,先做数据验证*/
//获取数据
name = binding.nameEt.getText().toString().trim();
email = binding.emailEt.getText().toString().trim();
password = binding.passwordEt.getText().toString().trim();
String cpassword = binding.cpasswordEt.getText().toString().trim();
//验证日期
if(TextUtils.isEmpty(name)){
Toast.makeText(this,"请输入你的名字",Toast.LENGTH_SHORT).show();
}
else if(!Patterns.EMAIL_ADDRESS.matcher(email).matches()){
Toast.makeText(this, "请输入正确的电子邮件", Toast.LENGTH_SHORT).show();
}
else if (TextUtils.isEmpty(password)){
Toast.makeText(this, "请输入密码", Toast.LENGTH_SHORT).show();
}
else if (TextUtils.isEmpty(cpassword)){
Toast.makeText(this, "确认你的密码", Toast.LENGTH_SHORT).show();
}
else if (!password.equals(cpassword)){
Toast.makeText(this, "密码不匹配", Toast.LENGTH_SHORT).show();
}
else {
creatUserAccount();
}
}
private void creatUserAccount() {
//展示进度
progressDialog.setMessage("创建账户...");
progressDialog.show();
//在firebase中创建用户
firebaseAuth.createUserWithEmailAndPassword(email,password)
.addOnSuccessListener(new OnSuccessListener() {
@Override
public void onSuccess(AuthResult authResult) {
//账户创建成功,现在加入firebase实时数据库
updataUserInfo();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure( Exception e) {
//账户创建失败
progressDialog.dismiss();
Toast.makeText(RegisterActivity.this, ""+e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
private void updataUserInfo() {
progressDialog.setMessage("正在保存用户信息");
//timestamp
long timestamp = System.currentTimeMillis();
//获取当前用户 UID,用户注册成功,可以开始使用
String uid = firebaseAuth.getUid();
//要添加到数据库中的设置数据
HashMap hashMap = new HashMap<>();
hashMap.put("id",uid);
hashMap.put("email",email);
hashMap.put("name",name);
hashMap.put("profileImage","");//加入失败
hashMap.put("userType","user");//可能的值为 user,admin:将在 Firebase 实时数据库中手动设为管理员
hashMap.put("timesTamp",timestamp);
//将数据设置为数据库
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("users");
ref.child(uid)
.setValue(hashMap)
.addOnSuccessListener(new OnSuccessListener() {
@Override
public void onSuccess(Void unused) {
//添加到数据库
progressDialog.dismiss();
Toast.makeText(RegisterActivity.this, "数据创建中", Toast.LENGTH_SHORT).show();
//由于创建了用户帐户,因此启动用户的dashboard
startActivity(new Intent(RegisterActivity.this,DashaboardUserActivity.class));
finish();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure( Exception e) {
//数据添加失败
progressDialog.dismiss();
Toast.makeText(RegisterActivity.this, ""+e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
}
我刚刚仔细看了一下,感觉没有什么问题,蛮奇怪的
检查Firebase实时数据库规则是否正确设置,如果规则不允许读写,应用程序将无法写入数据
可以在代码中添加日志并调试以查找问题
这种情况可以看下firebase开发文档。正常点的后端api,收到内容后回返回一个响应
不知道你这个问题是否已经解决, 如果还没有解决的话: