无法从 Android 将数据发布到 Firebase 数据库

Posted

技术标签:

【中文标题】无法从 Android 将数据发布到 Firebase 数据库【英文标题】:Unable to post data to Firebase Database from Android 【发布时间】:2017-02-07 19:20:53 【问题描述】:

我将 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() 的输出 【参考方案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。

以上是关于无法从 Android 将数据发布到 Firebase 数据库的主要内容,如果未能解决你的问题,请参考以下文章

使用 android studio java Recycler 视图从 Firebase 实时数据库中删除一个节点

我该如何解决这个问题:Android Studio - Flutter - Dart - firebase [关闭]

无法使用 Kotlin Retrofit 将数据从 Android 插入到 Mysql [重复]

无法从 Android 将数据发布到 Firebase 数据库

无法将图片从 Android 上传到 java 服务器

无法从cordova CLI 将android 平台添加到cordova 项目