无法从 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 数据库设置了 true
和 read
和 write
权限。
"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 [重复]