数据未插入 Firebase 实时数据库抛出 Android

Posted

技术标签:

【中文标题】数据未插入 Firebase 实时数据库抛出 Android【英文标题】:Data is not inserting into Firebase Realtime Database throw Android 【发布时间】:2021-11-07 21:25:25 【问题描述】:

我编写了简单的 Firebase 实时数据库代码,使用 android java 代码在其中插入数据。每当我单击上传按钮时,都会单击按钮,但不会执行 firebase 代码,而不会显示任何错误消息或有关数据插入的警告。我尝试创建许多不同的新项目来测试相同的代码但没有工作。

我的代码:

在下面的代码中,没有从 SuccessListener() 或 FailureListener() 调用任何方法,但按钮被点击了。

public void onClick(View v) 
        if(v.getId()==uploadBtn.getId()) 

    DatabaseReference ref= FirebaseDatabase.getInstance().getReference().child("Users");
                TestModel tm=new TestModel("Angela","angela@123");
                ref.child("Angela").setValue(tm).addOnSuccessListener(new OnSuccessListener<Void>() 
                    @Override
                    public void onSuccess(Void aVoid) 
                        Log.d("app","data inserted");
                    
                ).addOnFailureListener(new OnFailureListener() 
                    @Override
                    public void onFailure(@NonNull Exception e) 
                        Log.d("app","failed to inserted: "+e.getMessage());
                    
                );

以上代码未收到任何错误消息或警告。而且firebase数据库也没有任何变化。

我的 TestModel 类:

public class TestModel 
    public String name,passwd;

    public TestModel(String name, String passwd) 
        this.name = name;
        this.passwd = passwd;
    

规则:

"rules": 
    ".read": true,
    ".write":true

Firebase 节点结构:

first-app-default-rtdb:null

build.gradle(项目):

buildscript 
    
    repositories 
        google()
        jcenter()
        
    
    dependencies 
        classpath 'com.android.tools.build:gradle:7.0.2'
        classpath 'com.google.gms:google-services:4.3.10'
    


allprojects 
    repositories 
        google()
        jcenter()
        
    


task clean(type: Delete) 
    delete rootProject.buildDir

build.gradle(应用程序):

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'

android 
    compileSdkVersion 29
    buildToolsVersion "29.0.3"

    defaultConfig 
        applicationId "com.simpleapp"
        minSdkVersion 26
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    

    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        
    
    compileOptions 
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    



dependencies 
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'androidx.appcompat:appcompat:1.3.1'
    implementation 'com.google.firebase:firebase-database:20.0.1'
    testImplementation 'junit:junit:4.13'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'

我尝试过以下但同样的问题:

工作室升级到 2020.3 添加了 Getter 和 Setter 为检查创建了新项目 Select,Update,Delete也试过了 .Json 文件手动添加 创建并连接了新的 Google 帐户 在 Real 和 Emulator 设备上测试应用(版本 7.0 - 11) 多次清理项目。在 gradle 中移除并添加了 firebase 迁移到安卓喷气背包 已尝试 *** 和正常连接 Gradle 插件升级到最新版本。 目标设备已更改,MIN 和 Target 版本已更改 防病毒软件被阻止。防火墙已禁用。 Firebase 规则已更改。 已添加数据库 URL 路径

请帮帮我。

【问题讨论】:

确保在 Firebase 控制台中创建数据库之后下载google-services.json,否则它不会包含正确的 URL。也可以尝试将数据库的URL直接放在代码中:DatabaseReference ref= FirebaseDatabase.getInstance("database URL here") @FrankvanPuffelen 我已经关注了这个。但仍然无法正常工作。您能否提及一个正确的链接以遵循与 firebase android 的连接步骤 对这个代码块进行调试并检查它是否被执行 您的数据库的确切位置是什么? 您确定该设备上有互联网连接吗? 【参考方案1】:

我在过去 3 天遇到这个问题终于找到了一些解决方案

首先更新你的 json 文件

第二次检查读取,写入规则为真

第三次转到项目查看->打开选项卡数据使用-> 现在您将看到产品部分,如果您误以为强制执行该选项,请确保您未强制执行数据库 在此之后,您最终将在数据库中读取或写入数据

谢谢

草丁快乐

在此处检查未强制数据的屏幕缩写 像这样 [1]:https://i.stack.imgur.com/s0pzI.png

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。【参考方案2】:

问题出在模拟器的 Internet 连接上。设备离线。因为我已经为模拟器使用了手机的热点连接。当热点关闭并启动模拟器时,模拟器始终处于离线模式,直到我们重新启动它。

Firebase 或 Android Studio 会针对此问题提供信息日志或警告、错误消息。

【讨论】:

【参考方案3】:

您可以尝试以下可能的解决方案:

    检查服务 JSON 文件放在 app 文件夹下。 签入 Firebase 控制台,您的数据库引用有效或不为空。

【讨论】:

【参考方案4】:

在您的类中添加 setter 方法,然后重试。

【讨论】:

生成了 Getter 和 Setter 但仍然没有变化。

以上是关于数据未插入 Firebase 实时数据库抛出 Android的主要内容,如果未能解决你的问题,请参考以下文章

我们可以将数据插入 Firebase 实时数据库吗?

firebase 实时数据库未在线更新

添加数据时,Firebase 列表视图未实时显示

Firebase 实时数据库未连接

数据未从 Android 应用程序写入 Firebase 实时数据库

实时数据库未将数据推送到 Firebase