数据未从 Android 应用程序写入 Firebase 实时数据库
Posted
技术标签:
【中文标题】数据未从 Android 应用程序写入 Firebase 实时数据库【英文标题】:Data is not being written in Firebase Realtime Database from Android App 【发布时间】:2018-01-12 15:43:28 【问题描述】:我想从 android 向 Firebase 实时数据库中写入数据。我做了以下事情。
在 firebase 中创建项目
配置并下载json文件并粘贴到app目录中
其他的都做了。
正确编辑了规则
然后我尝试运行文档中提供的最简单的代码
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("message");
myRef.setValue("Hello, World!");
还是不行。数据库仍然显示为空。 有人请帮忙。 谢谢
【问题讨论】:
您是否在日志中看到任何错误,例如“permission denied”? 默认情况下,规则设置为只允许经过身份验证的用户读写。 您找到解决方案了吗? 【参考方案1】:检查数据库设置中的规则。 默认情况下,只允许对授权用户进行读写操作。 将其更改为:
"rules":
".read": true,
".write": true
也许这可以解决你的问题。
【讨论】:
我按照你说的修改了规则,还是不行【参考方案2】:您可以添加以下代码来测试发生了什么:
dataReference.setValue(value, new DatabaseReference.CompletionListener()
@Override
public void onComplete(DatabaseError databaseError, DatabaseReference dataReference)
);
【讨论】:
对我来说,我在 onComplete 之后添加了一个 Toast,它没有显示任何内容【参考方案3】:改变规则
"rules":
".read": true,
".write": true
【讨论】:
虽然这是一个的答案,但它不是一个很好的答案。你可以暂时把你的规则改成这样,请不要这样。【参考方案4】:检查你的读写规则
“规则”: ".read": "auth == null", ".write": "auth == null"
此规则仅在用户未登录时才允许。
写入数据库 FirebaseDatabase.getInstance().getReference().child("users").setValue("value");
【讨论】:
【参考方案5】:这里有一些代码可以尝试:
private DatabaseReference mDatabase;
mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.child("messages").setValue("Hello, World");
如果这不起作用,那么要么存在规则问题(我认为您已解决),要么存在应用中的 Firebase 初始化问题。
【讨论】:
以上是关于数据未从 Android 应用程序写入 Firebase 实时数据库的主要内容,如果未能解决你的问题,请参考以下文章
数据未从 android 应用程序保存到 localhost 数据库
未从 LocationManager 中清除的 Android 模拟位置提供程序