数据未从 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 数据库

数据库未从 Activity 恢复

Android 应用程序未从快捷方式启动

未从 LocationManager 中清除的 Android 模拟位置提供程序

图标和闪屏未从 phonegap 复制到 android 平台

当页面数据未从 Firebase 完全加载时显示加载指示器/微调器 - Flutter