kotlin - 实时数据库未存储数据
问题描述
l 无法保存数据 Firebase 实时数据库没有错误代码。auth 创建用户但数据库未在应用程序内存储用户数据。l 改变数据库规则
{
"rules": {
".read": true,
".write": true
}
}
l 关闭防火墙,尝试测试另一个应用程序,我从firebase中完全删除了应用程序并重新创建它并再次下载了google-services.json文件。但无法解决问题。我尝试了很多不同的代码结构,但都没有工作这是我的注册活动代码块最后一个版本
class SignUpActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.sign_up_activity)
signInView.setOnClickListener {
startActivity(Intent(this, SignInActivity::class.java))
}
sign_up_btn.setOnClickListener {
createAccount()
}
}
private fun createAccount() {
val fullname = fullNameSignUp.text.toString()
val username = userNameSignUp.text.toString()
val email = emailSignUp.text.toString()
val password = passwordSignUp.text.toString()
when{
TextUtils.isEmpty(fullname) -> Toast.makeText(this,"full name is required.", Toast.LENGTH_LONG).show()
TextUtils.isEmpty(username) -> Toast.makeText(this,"user name is required.", Toast.LENGTH_LONG).show()
TextUtils.isEmpty(email) -> Toast.makeText(this,"email is required.", Toast.LENGTH_LONG).show()
TextUtils.isEmpty(password) -> Toast.makeText(this,"password is required.", Toast.LENGTH_LONG).show()
else -> {
/*
val alert = AlertDialog.Builder(this)
alert.setTitle("SignUp")
alert.setMessage("Please wait, this may take a while...")
alert.setCancelable(false)
alert.show()
*/
val progressDialog = ProgressDialog(this@SignUpActivity)
progressDialog.setTitle("SignUp")
progressDialog.setMessage("Please wait, this may take a while...")
progressDialog.setCanceledOnTouchOutside(false)
progressDialog.show()
val mAuth: FirebaseAuth = FirebaseAuth.getInstance()
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener { task ->
if (task.isSuccessful) {
saveUserInfo(fullname, username, email,progressDialog)
progressDialog.dismiss()
// AlertDialog.Builder(this)
// finish()
} else {
val message = task.exception!!.toString()
Toast.makeText(this, "Error: $message", Toast.LENGTH_LONG).show()
mAuth.signOut()
progressDialog.dismiss()
// AlertDialog.Builder(this)
// finish()
}
}
}
}
}
private fun saveUserInfo(fullname: String, username: String, email: String,progressDialog:ProgressDialog) {
val currentUserID = FirebaseAuth.getInstance().currentUser!!.uid
val usersRef = FirebaseDatabase.getInstance().reference.child("Users")
val userMap = HashMap<String,Any>()
userMap["uid"] = currentUserID
userMap["fullname"] = fullname
userMap["username"] = username
userMap["email"] = email
userMap["bio"] = ""
userMap["image"] = "gs://fart-me-ae78f.appSpot.com/Default Images/profile.png"
// db = FirebaseFirestore.getInstance()
// val usersRef = db.collection("Users").add(userMap)
// usersRef.addOnCompleteListener { task ->
usersRef.child("Users").child(currentUserID).setValue(userMap)
.addOnCompleteListener { task ->
if (task.isSuccessful) {
Toast.makeText(this, "Account has been created successfully.", Toast.LENGTH_LONG).show()
progressDialog.dismiss()
val intent = Intent(this@SignUpActivity, MainActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(intent)
finish()
// AlertDialog.Builder(this)
// finish()
} else {
val message = task.exception!!.toString()
Toast.makeText(this, "Error: $message", Toast.LENGTH_LONG).show()
FirebaseAuth.getInstance().signOut()
progressDialog.dismiss()
//AlertDialog.Builder(this)
// finish()
}
}
}
}
那些有同样问题的人找到的解决方案对我不起作用。如果有人能帮我解决这个问题,我会很高兴
解决方案
推荐阅读
- html - 页脚悬停在内容的正下方
- php - foreach 中的 PHP foreach 用之前迭代的条目填充数组
- javascript - 从 Node.js 中的远程 Javascript 文件导入命名导出?
- java - 如何在 RecyclerView 中正确更新数据以在插入或更新另一个活动的数据后查看更改
- ios - iOS 15:为通知启用“在应用程序中配置”选项
- arrays - 如何根据 C 中的用户输入创建交换二维数组元素的函数?
- r - 将格式化为字符的无空格日期转换为日期
- java - 创建一个返回 ArrayList 的方法
- r - RMD (PDF) 中的 ggforce facet_wrap_paginate 生成半页图
- android - 错误:无法将元素类型“TextSpan”分配给列表类型“Widget”-Flutter