You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase实时数据库与Storage保存信息无响应问题求助

问题排查与修复方案

1. 致命语法错误导致代码无法运行

你的Activity类定义缺少字母c,这会直接导致编译失败,Activity无法正常启动,点击按钮自然毫无反应:

// 错误写法
lass AccountSettingsActivity : AppCompatActivity() {

// 修正后
class AccountSettingsActivity : AppCompatActivity() {

2. 未处理用户未登录的场景

onCreate中获取的uid如果为null(用户未登录),点击保存按钮后不会执行任何逻辑,也没有提示。需要补充空值判断的反馈:

if (uid != null){
    // 原有写入数据库逻辑
}else{
    Toast.makeText(this@AccountSettingsActivity, "请先登录", Toast.LENGTH_SHORT).show()
}

3. 进度弹窗显示时机错误

uploadProfilePic方法中,progressDialog.show()放在了上传成功的回调里,导致只有上传完成才会显示弹窗,完全失去了进度提示的作用。应该在发起上传请求前就显示弹窗:

private fun uploadProfilePic() {
    val progressDialog = ProgressDialog(this@AccountSettingsActivity)
    progressDialog.setTitle("Uploading")
    progressDialog.setMessage("Please wait, this may take a while")
    progressDialog.setCanceledOnTouchOutside(false)
    progressDialog.show() // 移至此处

    imageUri = Uri.parse("android.resource://$packageName/${R.drawable.profile}")
    val currentUser = auth.currentUser ?: run {
        progressDialog.dismiss()
        Toast.makeText(this, "用户未登录", Toast.LENGTH_SHORT).show()
        return
    }
    storageReference = FirebaseStorage.getInstance().getReference("Users/${currentUser.uid}")
    
    storageReference.putFile(imageUri).addOnSuccessListener {
        progressDialog.dismiss()
        Toast.makeText(this@AccountSettingsActivity, "上传成功", Toast.LENGTH_SHORT).show()
    }.addOnFailureListener{
        progressDialog.dismiss()
        Toast.makeText(this@AccountSettingsActivity, "图片上传失败", Toast.LENGTH_SHORT).show()
    }
}

4. Firebase权限规则限制

检查Firebase实时数据库和Storage的权限规则,默认规则会禁止未授权的写入操作,导致数据无法同步。建议设置为仅允许已认证用户读写:

  • 实时数据库规则示例:
{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}
  • Storage规则示例:
rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}

5. 空安全隐患

auth.currentUser?.uid在uploadProfilePic中可能为null,导致Storage路径异常,建议提前做非空判断(如上述代码中添加的currentUser非空校验)。

内容的提问来源于stack exchange,提问作者yvesfr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 16:13:15