Stay organized with collections Save and categorize content based on your preferences.
If you haven't already, add Firebase to your Android project.
Create a DatabaseNavigate to the Realtime Database section of the Firebase console. You'll be prompted to select an existing Firebase project. Follow the database creation workflow.
Select a starting mode for your Firebase Security Rules:
Good for getting started with the mobile and web client libraries, but allows anyone to read and overwrite your data. After testing, make sure to review the Understand Firebase Realtime Database Rules section.
To get started with the web, Apple, or Android SDK, select testmode.
Denies all reads and writes from mobile and web clients. Your authenticated application servers can still access your database.
Choose a location for the database.
Depending on the location of the database, the URL for the new database will be in one of the following forms:
DATABASE_NAME.firebaseio.com
(for databases in us-central1
)
DATABASE_NAME.REGION.firebasedatabase.app
(for databases in all other locations)
Click Done.
When you enable Realtime Database, it also enables the API in the Cloud API Manager.
Add the Realtime Database SDK to your appIn your
module (app-level) Gradle file(usually
<project>/<app-module>/build.gradle.kts
or
<project>/<app-module>/build.gradle
), add the dependency for the
Realtime Databaselibrary for Android. We recommend using the
Firebase Android BoMto control library versioning.
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:34.1.0")) // Add the dependency for the Realtime Database library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-database") }
By using the Firebase Android BoM, your app will always use compatible versions of Firebase Android libraries.
(Alternative) Add Firebase library dependencies without using the BoM
If you choose not to use the Firebase BoM, you must specify each Firebase library version in its dependency line.
Note that if you use multiple Firebase libraries in your app, we strongly recommend using the BoM to manage library versions, which ensures that all versions are compatible.
dependencies { // Add the dependency for the Realtime Database library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-database:22.0.0") }Configure Realtime Database Security Rules
The Realtime Database provides a declarative rules language that allows you to define how your data should be structured, how it should be indexed, and when your data can be read from and written to.
Note: By default, read and write access to your database is restricted so only authenticated users can read or write data. To get started without setting up Authentication, you can configure your rules for public access. This does make your database open to anyone, even people not using your app, so be sure to restrict your database again when you set up authentication. Write to your databaseRetrieve an instance of your database using getInstance()
and reference the location you want to write to.
us-central1
default database, you must pass the database URL to getInstance()
(or for Kotlin database()
). For a us-central1
default database, you can call getInstance()
(or database
) without arguments.
You can find your Realtime Database URL in the Realtime Database section of the Firebase console. Depending on the location of the database, the database URL will be in one of the following forms:
https://DATABASE_NAME.firebaseio.com
(for databases in us-central1
)https://DATABASE_NAME.REGION.firebasedatabase.app
(for databases in all other locations)// Write a message to the database val database = Firebase.database val myRef = database.getReference("message") myRef.setValue("Hello, World!")Java
// Write a message to the database FirebaseDatabase database = FirebaseDatabase.getInstance(); DatabaseReference myRef = database.getReference("message"); myRef.setValue("Hello, World!");
You can save a range of data types to the database this way, including Java objects. When you save an object the responses from any getters will be saved as children of this location.
Read from your databaseTo make your app data update in realtime, you should add a ValueEventListener
to the reference you just created.
The onDataChange()
method in this class is triggered once when the listener is attached and again every time the data changes, including the children.
// Read from the database myRef.addValueEventListener(object : ValueEventListener { override fun onDataChange(dataSnapshot: DataSnapshot) { // This method is called once with the initial value and again // whenever data at this location is updated. val value = dataSnapshot.getValue<String>() Log.d(TAG, "Value is: $value") } override fun onCancelled(error: DatabaseError) { // Failed to read value Log.w(TAG, "Failed to read value.", error.toException()) } })Java
// Read from the database myRef.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { // This method is called once with the initial value and again // whenever data at this location is updated. String value = dataSnapshot.getValue(String.class); Log.d(TAG, "Value is: " + value); } @Override public void onCancelled(@NonNull DatabaseError error) { // Failed to read value Log.w(TAG, "Failed to read value.", error.toException()); } });Optional: Configure ProGuard
When using Firebase Realtime Database in your app along with ProGuard, you need to consider how your model objects will be serialized and deserialized after obfuscation. If you use DataSnapshot.getValue(Class)
or DatabaseReference.setValue(Object)
to read and write data, you will need to add rules to the proguard-rules.pro
file:
# Add this global rule
-keepattributes Signature
# This rule will properly ProGuard all the model classes in
# the package com.yourcompany.models.
# Modify this rule to fit the structure of your app.
-keepclassmembers class com.yourcompany.models.** {
*;
}
To get help for questions or issues related to ProGuard, visit the Guardsquare Community forums to get assistance from an expert.
Prepare for LaunchBefore launching your app, we recommend walking through our launch checklist to make sure your app is ready to go!
Be sure to enable App Check to help ensure that only your apps can access your databases.
Next StepsExcept as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-08-15 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-15 UTC."],[],[]]
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4