如何在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
相关产品推荐
相关产品推荐

