【问题标题】:Firebase Android App - not updating realtime databaseFirebase Android App - 不更新实时数据库
【发布时间】:2020-04-06 19:59:25
【问题描述】:

我在尝试将数据推送到我的 firebase 实时数据库时遇到了一些错误。我检查了几个教程,根据所有这些教程,我没有做错任何事情。不幸的是,我无法从我的 android studio 模拟器设备更新数据库。

我激活了调试模式并逐步完成了每一个进程,发现我的代码确实可以工作,因为数据库在推送到它时会使用子 ID 进行响应。

package com.example.fbconnect;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

public class MainActivity extends AppCompatActivity {
    Button btnsaves;
    Member member;
    DatabaseReference myRef;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnsaves=(Button)findViewById(R.id.button);
        btnsaves.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                myRef = FirebaseDatabase.getInstance().getReference("Member");
                String id = myRef.push().getKey();
                member = new Member("MSmith", 12, id);
                myRef.child(id).setValue(member);
                Toast.makeText(MainActivity.this, "Success", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

调试到这一行时

String id = myRef.push().getKey();

我明白了,数据库回答了一个代码。但它不会设置新值或更新现有数据库 Childs 的值。

激活调试模式后,我在 android studio 中发现了一些可能导致问题的罕见行:

E/FirebaseInstanceId:主题同步或令牌检索因硬故障异常而失败:AUTHENTICATION_FAILED。不会重试该操作。

我确信我没有在我的 firebase 中激活任何身份验证。通常每个人都应该能够读写(我知道这一点,但我迫切希望让这个数据库连接正常工作)。

你能帮帮我吗?

【问题讨论】:

  • 您在firebase控制台中更改了Firebase数据库的身份验证吗?
  • 不,它仍然默认。我尝试激活匿名登录方法,但这也无济于事......
  • 转到 firebase 控制台 > 数据库 > Firebase 实时数据库 > 规则选项卡将读取和写入更改为 true。
  • 我也遇到了同样的情况,它可以在我的物理设备上运行,但不能在模拟器上运行。但它似乎将数据存储在一些本地缓存中,因为它可以检索我在模拟器中设置的内容,但在我关闭应用程序后它也消失了。
  • 对我来说,模拟器的问题是通过从设备上卸载应用程序并重新部署来解决的。

标签: android firebase firebase-realtime-database firebase-authentication


【解决方案1】:

转到 firebase 控制台 > 数据库 > Firebase 实时数据库 > 规则选项卡将读取和写入更改为 true。 还要检查您的设备是否已连接到互联网。

【讨论】:

  • 已经这样做了,抱歉,您的意思是一般的 firebase 身份验证
  • 检查Android studio是否连接到Firebase数据库。还要检查您的设备是否已连接到互联网
  • 我用的是android studio 模拟器,反正不应该连网吗?
  • 不确定模拟器...在 AVD Manager 中尝试“立即冷启动”
  • 你是对的......模拟的android设备上的系统设置显示:连接到AndroidWifi,没有互联网。做了一个“现在冷启动” - 没有任何改变
【解决方案2】:

Firebase 中的默认规则适用于授权请求

您可以将读写更改为True

但这并不安全

任何拥有您的 Firebase 网址的人都可以访问和更改数据

【讨论】:

  • 我已经将这些设置更改为 true。但该应用不会连接到数据库。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-19
  • 2021-10-04
  • 1970-01-01
  • 2021-10-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多