You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android端Firebase Realtime Database数据无法插入无报错如何解决?

Android Java接入Firebase Realtime Database写入操作无回调无数据写入问题排查

问题现象

使用Android Java编写Firebase Realtime Database插入数据代码,点击上传按钮响应正常,但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());
                    }
                });
}

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
}

初始数据库节点结构

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'
}

已尝试未生效的解决方案

  • 升级Android Studio到2020.3版本
  • 为实体类添加Getter和Setter方法
  • 新建项目测试相同代码
  • 测试查询、更新、删除操作均无效
  • 手动添加google-services.json配置文件
  • 更换新的Google账号关联项目
  • 在真机和7.0-11版本的模拟器上测试应用
  • 多次清理项目,移除后重新添加Firebase依赖
  • 项目迁移到Android Jetpack
  • 分别使用VPN和普通网络测试
  • 升级Gradle插件到最新版本
  • 更换测试设备,调整minSdk和targetSdk版本
  • 关闭杀毒软件,禁用系统防火墙
  • 修改Firebase数据库读写规则
  • 代码中显式添加数据库URL路径

排查建议

  1. 首先确认AndroidManifest.xml中是否已添加网络权限,权限缺失会直接导致Firebase网络请求被静默拦截无回调:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  1. 给TestModel类补充公共无参构造方法,Firebase SDK序列化/反序列化实体类必须要求存在无参构造方法,否则会出现静默失败的情况,修改后的参考代码:
public class TestModel {
    public String name,passwd;
    // 补充无参构造方法
    public TestModel() {
    }
    public TestModel(String name, String passwd) {
        this.name = name;
        this.passwd = passwd;
    }
}
  1. 开启Firebase Debug日志,在Application的onCreate方法中添加如下代码,查看底层请求日志定位具体问题:
FirebaseDatabase.getInstance().setLogLevel(Logger.Level.DEBUG);
  1. 确认google-services.json中的firebase_url字段和你的数据库实际地址完全一致,避免因为数据库部署地域不同导致请求地址错误。
  2. 检查测试设备上Google Play服务的网络权限是否正常开启,部分国产设备会默认禁用Google Play服务的网络权限,直接导致Firebase请求无法发送。

内容的提问来源于stack exchange,提问作者Nikita K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 08:57:04