热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在安卓系统中将数据保存到Firebase实时数据库?

如何在安卓系统中将数据保存到Firebase实时数据库?原文

如何在安卓系统中将数据保存到 Firebase 实时数据库?

原文:https://www . geeksforgeeks . org/如何将数据保存到 firebase-real-database in Android/

Firebase 是著名的后端平台之一,被如此多的开发者用来为他们的应用和网站提供后端支持。它是谷歌的产品,提供数据库、存储、用户认证等服务。在本文中,我们将创建一个简单的应用程序,其中我们将添加我们的数据到 Firebase 实时数据库。注意,我们将使用 Java 语言来实现这个项目。

什么是 Firebase 实时数据库?

Firebase 实时数据库是一个 NoSQL 云数据库,用于存储和同步数据。数据库中的数据可以在所有客户端上同步,如安卓、网络和 IOS。数据库中的数据以 JSON 格式存储,并与每个连接的客户端实时更新。

使用 Firebase 实时数据库有什么优势?



  • 使用 Firebase 实时数据库的主要优点是数据以实时方式更新,并且您不必对数据更新或更改提出任何请求。每当数据发生变化时,数据库都会使用数据同步,这些变化将在几毫秒内反映连接的用户。

  • 使用 Firebase 实时数据库时,即使设备失去与数据库的连接,您的应用程序也能保持响应。一旦用户建立了连接,他将从数据库接收数据中所做的更改。

  • 存储在 Firebase 数据库中的数据可以通过 Firebase 的门户网站轻松访问。您可以从电脑和移动设备管理您的数据库。您可以管理数据库的规则,这些规则授予对数据库进行读写操作的权限。


我们将在本文中构建什么?

在本文中,我们将构建一个简单的应用程序,在这个应用程序中,我们将借助一些文本字段从用户那里获取数据,并将这些数据存储在 Firebase 实时数据库中。请注意,我们使用的是 Firebase 实时数据库,该应用程序是使用 JAVA 语言编写的。

逐步实施

第一步:创建新项目

要在安卓工作室创建新项目,请参考如何在安卓工作室创建/启动新项目。注意选择 Java 作为编程语言。

第二步:将你的应用连接到 Firebase

创建新项目后,导航至顶部栏上的工具选项。在里面点击火焰基地。点击 Firebase 后,你可以看到截图中下面提到的右栏。

在该栏中,导航到 Firebase 实时数据库。点击该选项,您将看到将应用程序连接到 Firebase将 Firebase 实时数据库添加到您的应用程序的两个选项。单击立即连接,您的应用程序将连接到 Firebase。之后点击第二个选项,现在你的应用程序连接到 Firebase。

将您的应用程序连接到 Firebase 后,您将看到下面的屏幕。

之后,验证 Firebase 实时数据库的依赖项已经添加到我们的 Gradle 文件中。现在导航到应用程序>渐变脚本,并在该文件中检查是否添加了以下依赖项。如果以下依赖项没有添加到您的 build.gradle 文件中。在依赖项部分添加以下依赖项。

实现' com . Google . firebase:firebase-数据库:19.6.0 '

添加此依赖项后,同步您的项目,现在我们可以创建我们的应用程序了。如果你想了解更多关于连接你的应用到 Firebase。参考这篇文章,详细了解在安卓应用中添加 Firebase。

第三步:使用 AndroidManifest.xml 文件

为了向 Firebase 添加数据,我们应该授予访问互联网的权限。要添加这些权限,请导航到应用程序> AndroidManifest.xml ,并在该文件中添加以下权限。

可扩展标记语言


<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

第 4 步:使用 activity_main.xml 文件

转到 activity_main.xml 文件,参考以下代码。下面是 activity_main.xml 文件的代码。

可扩展标记语言


xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    
    <EditText
        android:id="@+id/idEdtEmployeeName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_margin="10dp"
        android:hint="Enter Employee Name"
        android:importantForAutofill="no"
        android:inputType="textPersonName" />
    
    <EditText
        android:id="@+id/idEdtEmployeePhoneNumber"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/idEdtEmployeeName"
        android:layout_margin="10dp"
        android:hint="Enter employee phone number"
        android:importantForAutofill="no"
        android:inputType="phone" />
    
    <EditText
        android:id="@+id/idEdtEmployeeAddress"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/idEdtEmployeePhoneNumber"
        android:layout_margin="10dp"
        android:hint="Enter employee address"
        android:inputType="textPostalAddress" />
    
    <Button
        android:id="@+id/idBtnSendData"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/idEdtEmployeeAddress"
        android:layout_margin="10dp"
        android:text="Add employee details"
        android:textAllCaps="false" />
RelativeLayout>

第五步:创建一个新的 Java 类来存储我们的数据

为了将多个数据发送到 Firebase 实时数据库,我们必须创建一个对象类,并将整个对象类发送到 Firebase。要创建一个对象类,导航到应用程序> java >你的应用程序的包名>右键单击它,然后单击新建> Java 类>给你的类命名。我的情况是员工信息,并在下面添加代码。

Java 语言(一种计算机语言,尤用于创建网站)


public class EmployeeInfo {
    // string variable for 
    // storing employee name.
    private String employeeName;
    // string variable for storing
    // employee contact number
    private String employeeContactNumber;
    // string variable for storing
    // employee address.
    private String employeeAddress;
    // an empty constructor is 
    // required when using
    // Firebase Realtime Database.
    public EmployeeInfo() {
    }
    // created getter and setter methods
    // for all our variables.
    public String getEmployeeName() {
        return employeeName;
    }
    public void setEmployeeName(String employeeName) {
        this.employeeName = employeeName;
    }
    public String getEmployeeContactNumber() {
        return employeeContactNumber;
    }
    public void setEmployeeContactNumber(String employeeContactNumber) {
        this.employeeContactNumber = employeeContactNumber;
    }
    public String getEmployeeAddress() {
        return employeeAddress;
    }
    public void setEmployeeAddress(String employeeAddress) {
        this.employeeAddress = employeeAddress;
    }
}

步骤 6:使用 MainActivity.java 文件

转到MainActivity.java文件,参考以下代码。以下是MainActivity.java文件的代码。代码中添加了注释,以更详细地理解代码。

Java 语言(一种计算机语言,尤用于创建网站)


import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
public class MainActivity extends AppCompatActivity {
    // creating variables for 
    // EditText and buttons.
    private EditText employeeNameEdt, employeePhoneEdt, employeeAddressEdt;
    private Button sendDatabtn;
    // creating a variable for our
    // Firebase Database.
    FirebaseDatabase firebaseDatabase;
    // creating a variable for our Database 
    // Reference for Firebase.
    DatabaseReference databaseReference;
    // creating a variable for 
    // our object class
    EmployeeInfo employeeInfo;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // initializing our edittext and button
        employeeNameEdt = findViewById(R.id.idEdtEmployeeName);
        employeePhoneEdt = findViewById(R.id.idEdtEmployeePhoneNumber);
        employeeAddressEdt = findViewById(R.id.idEdtEmployeeAddress);
        // below line is used to get the 
        // instance of our FIrebase database.
        firebaseDatabase = FirebaseDatabase.getInstance();
        // below line is used to get reference for our database.
        databaseReference = firebaseDatabase.getReference("EmployeeInfo");
        // initializing our object 
        // class variable.
        employeeInfo = new EmployeeInfo();
        sendDatabtn = findViewById(R.id.idBtnSendData);
        // adding on click listener for our button.
        sendDatabtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // getting text from our edittext fields.
                String name = employeeNameEdt.getText().toString();
                String phone = employeePhoneEdt.getText().toString();
                String address = employeeAddressEdt.getText().toString();
                // below line is for checking weather the 
                // edittext fields are empty or not.
                if (TextUtils.isEmpty(name) && TextUtils.isEmpty(phone) && TextUtils.isEmpty(address)) {
                    // if the text fields are empty 
                    // then show the below message.
                    Toast.makeText(MainActivity.this, "Please add some data.", Toast.LENGTH_SHORT).show();
                } else {
                    // else call the method to add 
                    // data to our database.
                    addDatatoFirebase(name, phone, address);
                }
            }
        });
    }
    private void addDatatoFirebase(String name, String phone, String address) {
        // below 3 lines of code is used to set
        // data in our object class.
        employeeInfo.setEmployeeName(name);
        employeeInfo.setEmployeeContactNumber(phone);
        employeeInfo.setEmployeeAddress(address);
        // we are use add value event listener method
        // which is called with database reference.
        databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                // inside the method of on Data change we are setting 
                // our object class to our database reference.
                // data base reference will sends data to firebase.
                databaseReference.setValue(employeeInfo);
                // after adding this data we are showing toast message.
                Toast.makeText(MainActivity.this, "data added", Toast.LENGTH_SHORT).show();
            }
            @Override
            public void onCancelled(@NonNull DatabaseError error) {
                // if the data is not added or it is cancelled then
                // we are displaying a failure toast message.
                Toast.makeText(MainActivity.this, "Fail to add data " + error, Toast.LENGTH_SHORT).show();
            }
        });
    }
}

添加此代码后,转到 Firebase 的此链接。点击此链接后,您将看到下面的页面,在此页面上点击右上角的转到控制台选项。

点击此屏幕后,您将看到下面的屏幕,其中包含您选择项目的所有项目。

在该屏幕中,单击左侧窗口中的实时数据库。

点击此选项后,您将看到右侧的屏幕。在此页面上,点击顶部栏中的规则选项。你会看到下面的屏幕。

在此屏幕中,单击规则选项卡,您将看到上面的屏幕,并将规则更改为真,如屏幕截图所示。规则被更改为真,因为我们没有在应用程序中提供身份验证,我们必须将数据写入数据库。这就是为什么我们指定它为真。更改规则后,单击发布规则按钮。单击该选项,您的规则将被发布。现在回到数据库的“数据”选项卡。

输出:

下面是我们的应用程序向 Firebase 实时数据库添加数据的视频。

[https://media.geeksforgeeks.org/wp-content/uploads/20201225155952/Screenrecorder-2020-12-25-15-48-46-492.mp4](https://media.geeksforgeeks.org/wp-content/uploads/20201225155952/Screenrecorder-2020-12-25-15-48-46-492.mp4)

运行该应用程序,并确保将您的设备连接到互联网。之后,在文本字段中添加一些数据,并点击插入数据按钮。数据将被添加到我们的 Firebase 数据库中。下面是我们从应用程序向 Firebase 数据库添加数据后将看到的截图。


推荐阅读
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 本文介绍了腾讯最近开源的BERT推理模型TurboTransformers,该模型在推理速度上比PyTorch快1~4倍。TurboTransformers采用了分层设计的思想,通过简化问题和加速开发,实现了快速推理能力。同时,文章还探讨了PyTorch在中间层延迟和深度神经网络中存在的问题,并提出了合并计算的解决方案。 ... [详细]
  • 本文讲述了作者通过点火测试男友的性格和承受能力,以考验婚姻问题。作者故意不安慰男友并再次点火,观察他的反应。这个行为是善意的玩人,旨在了解男友的性格和避免婚姻问题。 ... [详细]
  • 安卓select模态框样式改变_微软Office风格的多端(Web、安卓、iOS)组件库——Fabric UI...
    介绍FabricUI是微软开源的一套Office风格的多端组件库,共有三套针对性的组件,分别适用于web、android以及iOS,Fab ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • IT方面的论坛太多了,有综合,有专业,有行业,在各个论坛里混了几年,体会颇深,以前是论坛哪里人多 ... [详细]
author-avatar
吴台吉国瑋智仁
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有