【发布时间】: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