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

Android Studio中如何修改FirebaseReference对应的实时数据库URL

解决方案
  • 方案1:调用FirebaseDatabase.getInstance()时显式传入你的东南亚区域数据库URL
    无参调用getInstance()时,Firebase会默认使用美国区域的firebaseio.com后缀地址,非默认区域的数据库必须手动传入完整地址才能正确访问。同时你原代码存在逻辑缺陷:直接给Users根节点执行setValue会覆盖整个Users表的所有数据,需要把新用户数据写入到对应用户UID的子节点下,修改后的代码如下:
// 显式传入东南亚区域实时数据库URL获取实例
myRef = FirebaseDatabase.getInstance("https://chatapp-5e8ce-default-rtdb.asia-southeast1.firebasedatabase.app/").getReference("Users");
String currUserId = FirebaseAuth.getInstance().getCurrentUser().getUid();
User user = new User(username, "default");

// 写入对应用户UID的子节点,避免覆盖全表数据
myRef.child(currUserId).setValue(user)
       .addOnCompleteListener(new OnCompleteListener<Void>() {
           @Override
           public void onComplete(@NonNull Task<Void> task) {
               if (task.isSuccessful()){
                   // 写入成功逻辑
               } else{
                   // 写入失败可调用task.getException()打印具体错误信息
               }
           }
       });
  • 方案2:更新项目配置文件
    如果你不想每次调用都手动写URL,可以进入Firebase控制台的项目设置页面,下载最新的google-services.json(安卓端)/GoogleService-Info.plist(iOS端)配置文件,替换项目中原有的旧文件。新配置文件已经包含了你东南亚区域的数据库地址,之后直接调用无参的FirebaseDatabase.getInstance()就会自动匹配正确的URL。
  • 额外注意事项
    操作完成后先清理项目缓存、重新构建运行,避免旧配置残留导致不生效;同时确认实时数据库的规则已经开放了对应写入权限,测试阶段可以临时设置为仅允许认证用户操作自己的数据:
{
  "rules": {
    "Users": {
      "$uid": {
        ".write": "$uid === auth.uid",
        ".read": "$uid === auth.uid"
      }
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:54:03