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

如何在Android Studio中使用Java接入Firebase实时数据库

在Android Studio中用Java接入Firebase实时数据库的完整指南

1. Firebase控制台基础配置

  • 打开Firebase控制台,创建或选择现有项目,点击「添加应用」选择Android平台
  • 输入应用的包名(需与Android Studio中一致),下载google-services.json文件并放到项目的app/目录下
  • 进入实时数据库页面,点击「创建数据库」,选择测试模式(仅开发阶段使用,上线前务必修改为安全规则)

2. 配置Android Studio依赖

项目级build.gradle(根目录)

添加Google服务插件依赖:

buildscript {
    dependencies {
        // 版本建议与Firebase官方推荐保持一致
        classpath 'com.google.gms:google-services:4.4.1'
    }
}

应用级build.gradle(app模块)

添加实时数据库依赖,并启用Google服务插件:

dependencies {
    // Firebase实时数据库依赖
    implementation 'com.google.firebase:firebase-database:20.3.0'
}

// 放在文件末尾
apply plugin: 'com.google.gms.google-services'

同步项目完成依赖配置。

3. 创建数据模型类

根据提供的示例数据,创建Product实体类——Firebase需要无参构造器和getter/setter来完成数据的序列化与反序列化:

public class Product {
    private String name;
    private String id;
    private String image;
    private int size;
    private double price;

    // 必须的无参构造器
    public Product() {}

    // 全参构造器
    public Product(String name, String id, String image, int size, double price) {
        this.name = name;
        this.id = id;
        this.image = image;
        this.size = size;
        this.price = price;
    }

    // Getter和Setter方法
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }

    public String getId() { return id; }
    public void setId(String id) { this.id = id; }

    public String getImage() { return image; }
    public void setImage(String image) { this.image = image; }

    public int getSize() { return size; }
    public void setSize(int size) { this.size = size; }

    public double getPrice() { return price; }
    public void setPrice(double price) { this.price = price; }
}

4. 初始化数据库实例

在需要操作数据库的Activity/Fragment中,获取DatabaseReference实例:

import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

// 获取数据库根节点引用
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
// 获取products节点引用(推荐用键值对存储,避免数组的局限性)
DatabaseReference productsRef = rootRef.child("products");

5. 写入示例数据

将示例数据写入数据库,这里用每个商品的id作为节点键,更符合Firebase的存储规范:

// 构造示例商品对象
Product shoe = new Product("时尚鞋履", "123", "https://firebasestorage.googleapis.com/v0/b/ecomfirebase-39a63.appspot.com/o/1886_side.jpeg?alt=media&token=c040a1e3-e05d-457a-ac67-dbb77934ba5d", 6, 409.45);
Product assistant = new Product("谷歌助手", "124", "https://firebasestorage.googleapis.com/v0/b/ecomfirebase-39a63.appspot.com/o/5fca8733bdb90c520c4127a2_EN_Google_Blog_Visual_NEW_EN.jpg?alt=media&token=087c1e24-31a0-4fba-bb5a-022d7e6800db", 0, 5499.45);

// 写入数据
productsRef.child(shoe.getId()).setValue(shoe);
productsRef.child(assistant.getId()).setValue(assistant);

写入后数据库结构如下:

{
  "products": {
    "123": {
      "name": "时尚鞋履",
      "id": "123",
      "image": "https://firebasestorage.googleapis.com/v0/b/ecomfirebase-39a63.appspot.com/o/1886_side.jpeg?alt=media&token=c040a1e3-e05d-457a-ac67-dbb77934ba5d",
      "size": 6,
      "price": 409.45
    },
    "124": {
      "name": "谷歌助手",
      "id": "124",
      "image": "https://firebasestorage.googleapis.com/v0/b/ecomfirebase-39a63.appspot.com/o/5fca8733bdb90c520c4127a2_EN_Google_Blog_Visual_NEW_EN.jpg?alt=media&token=087c1e24-31a0-4fba-bb5a-022d7e6800db",
      "size": 0,
      "price": 5499.45
    }
  }
}

6. 实时读取数据

添加监听器获取数据并实时监听变化:

import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.ValueEventListener;

productsRef.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        // 遍历所有商品节点
        for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
            Product product = snapshot.getValue(Product.class);
            // 处理商品数据,比如打印或更新UI
            if (product != null) {
                System.out.println("商品名称:" + product.getName() + ",价格:" + product.getPrice());
            }
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        // 读取失败时处理错误
        System.out.println("读取数据失败:" + databaseError.getMessage());
    }
});

7. 常用操作示例

更新商品价格

productsRef.child("123").child("price").setValue(429.99);

删除某个商品

productsRef.child("124").removeValue();

注意事项

  • 开发阶段的测试规则允许任何人读写,上线前必须修改为基于用户认证的安全规则,避免数据泄露
  • 确保设备能正常访问Firebase服务,测试时可关闭VPN
  • 数据模型类必须包含无参构造器,否则Firebase无法解析数据

内容的提问来源于stack exchange,提问作者Praphul Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 22:07:48