【问题标题】:Unable to post data to Firebase Database from Android无法从 Android 将数据发布到 Firebase 数据库
【发布时间】:2026-01-23 06:45:02
【问题描述】:

我将 Firebase 用于我的 Android 平台聊天应用程序。我正在将此库用于 Firebase 数据库:

compile 'com.google.firebase:firebase-database:9.6.0' 

我按照here 的所有步骤来设置我的项目。我为我的 Firebase 数据库设置了 truereadwrite 权限。

{
  "rules": {
    ".read": true,
    ".write": true
  }
}

我正在使用以下代码将我的数据发布到 Firebase 数据库(单击按钮后会触发以下代码块):

String name = loyalUserText.getText().toString().trim();

FirebaseDatabase db = FirebaseDatabase.getInstance();
DatabaseReference dbRef = db.getReference().child("name");
dbRef.setValue(name);
Log.e(TAG, "onClick: "+dbRef.toString());

我的日志返回这个:

 E/LoginActivity: onClick:https://poztal-14f48.firebaseio.com/name

然后我检查了我的 Firebase 数据库,没有任何条目。它看起来是空的。我创建了一个具有相同子名的子项 ("name"),并在其中添加了一个新值。

但是这个值并没有反映到我的应用程序中ValueEventListener。问题是我的应用没有与 firebase 数据库通信。

更新:

我在活动中实现的监听器是OnCompleteListener<Void>

dbRef.setValue(name).addOnCompleteListener(this);

@Override
    public void onComplete(@NonNull Task<Void> task) {
        Log.e(TAG, "onComplete: " + task.isComplete());
        Log.e(TAG, "onComplete: " + task.toString());
    }

这个onComplete() 块没有到达。

提前致谢。

【问题讨论】:

  • 使用完成监听器检查错误并更新问题
  • @NishantDubey 我已经更新了我的问题。请调查一下。
  • 这不是你添加完成回调的方式
  • 'ref.setValue("我正在写数据", new Firebase.CompletionListener() { @Override public void onComplete(FirebaseError firebaseError, Firebase firebase) { if (firebaseError != null) { System .out.println("数据无法保存。" + firebaseError.getMessage()); } else { System.out.println("数据保存成功。"); } }' 这就是我的意思
  • 我想要 firebaseError.getMessage() 的输出

标签: android firebase firebase-realtime-database


【解决方案1】:

如果您尝试在名为name 的字段中插入[NAME],请尝试Map

Map<String, String> param = new HashMap<>();
param.put("name", loyalUserText.getText().toString().trim());

Firebase reference = new Firebase(YOUR_FIREBASE_URL);
reference.push().setValue(param);

【讨论】:

    【解决方案2】:

    请使用 pojo 类将您的值设置到 firebase 数据库中,如下所示。

    String name = loyalUserText.getText().toString().trim();
    User user = new User();
    user.setName(name);
    FirebaseDatabase db = FirebaseDatabase.getInstance();
    DatabaseReference dbRef = db.getReference().child("name");
    
    dbRef.setValue(user);
    

    【讨论】:

    • 我也尝试过使用 pojo 类,但它并没有解决我的问题。
    • @Madhan 您是否使用了 Firebase 身份验证?
    • 我没有使用身份验证,我将读写的默认权限更改为 true。