Back to Posts

Android – Getting Started with Firebase – 2

This tutorial is the continuation of this tutorial Android – Getting Started with Firebase – 1. In the previous tutorial we learnt about the Firebase and had created our account in Firebase. Also we have made a Registration Activity in our Android App in which we have created the new user with Email & Password in Firebase.

In this tutorial we will learn to create Login Activity and Forgot Password Activity in our App. So let’s start !!

2.2 Log In with Email & Password

  • First of all we will complete our Login Activity. In this activity we will take two EditText fields for Email & Password, & three buttons for Login and navigating to Register & Forgot Password activity.
  • Go to res ⇒ layout ⇒ activity_login.xml and copy the following code.
<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_login"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="vertical"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="net.apptronix.www.firebase_authentication.LoginActivity">

    <EditText
        android:id="@+id/email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:hint="Enter Email Id"
        android:inputType="textEmailAddress"
        android:textColor="#123"
        android:textSize="20dp"
        android:textColorHint="#123" />

    <EditText
        android:id="@+id/password"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:hint="Enter Password"
        android:inputType="textPassword"
        android:textColor="#123"
        android:textSize="20dp"
        android:textColorHint="#123" />

    <Button
        android:id="@+id/login"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dip"
        android:background="@color/colorAccent"
        android:text="Login"
        android:textSize="20dp"
        android:onClick="login"
        android:textColor="@android:color/black" />

    <Button
        android:id="@+id/reset"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dip"
        android:background="@null"
        android:onClick="reset"
        android:textSize="20dp"
        android:text="Forgot Password"
        android:textAllCaps="false"
        android:textColor="@color/colorAccent" />

    <Button
        android:id="@+id/register"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dip"
        android:background="@null"
        android:onClick="register"
        android:text="Not Registered ? Register Here"
        android:textAllCaps="false"
        android:textColor="#123"
        android:textSize="20dp" />

    </LinearLayout>
  • Now Go to LoginActivity.java file and paste the following code just below the package line. Here we will use signInWithEmailAndPassword() provided by Firebase, a method to sign in with email & password.
import android.app.ProgressDialog;
 import android.content.Intent;
 import android.os.Bundle;
 import android.support.annotation.NonNull;
 import android.support.v7.app.AppCompatActivity;
 import android.text.TextUtils;
 import android.view.View;
 import android.widget.EditText;
 import android.widget.Toast;
 import com.google.android.gms.tasks.OnCompleteListener;
 import com.google.android.gms.tasks.Task;
 import com.google.firebase.auth.AuthResult;
 import com.google.firebase.auth.FirebaseAuth;

public class LoginActivity extends AppCompatActivity {

 private EditText Email, Password;
  private FirebaseAuth auth;
  ProgressDialog pd;

 @Override
  protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_login);
  Email = (EditText) findViewById(R.id.email);
  Password = (EditText) findViewById(R.id.password);

 auth = FirebaseAuth.getInstance(); //Get Firebase auth instance

 }

 public void login(View v) //login button

 {
  String em = Email.getText().toString();
  String pass = Password.getText().toString();

 if (TextUtils.isEmpty(em)) {
  Email.setError("Enter Email Id");
  return;
  }

 if (TextUtils.isEmpty(pass)) {
  Password.setError("Enter Password");
  return;
  }

 pd=new ProgressDialog(LoginActivity.this);
  pd.setMessage("Please Wait");
  pd.setCancelable(false);
  pd.show();

 //authenticate user
  auth.signInWithEmailAndPassword(em, pass)
  .addOnCompleteListener(LoginActivity.this, new OnCompleteListener<AuthResult>() {
  @Override
  public void onComplete(@NonNull Task<AuthResult> task) {

 // If sign in fails, display a error message to the user
  // If signed in we are redirecting to the MainActivity
  pd.dismiss();
  if (!task.isSuccessful()) {
  // there was an error
  if (Password.length() < 6) {
  Password.setError("Password Must Be Greater than or equal to 6");
  } else {
  Toast.makeText(LoginActivity.this, "Invalid Email or Password" ,
  Toast.LENGTH_LONG).show();
  }
  } else {
  Toast.makeText(LoginActivity.this, "Login Successful" ,
  Toast.LENGTH_LONG).show();
  Intent intent = new Intent(LoginActivity.this, MainActivity.class);
  startActivity(intent);
  finish();
  }
  }
  });
  }

 public void reset(View v) //forgot password button

 {
  startActivity(new Intent(this, ResetPasswordActivity.class));
  finish();
  }

 public void register(View v) //register button

 {
  startActivity(new Intent(this, SignUpActivity.class));
  finish();
  }
 }
  • Lastly open AndroidManifest.xml file and make LoginActivity as launcher activity (for now) and test the login process.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="net.apptronix.www.firebase_authentication">

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="Firebase"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
        </activity>
        <activity android:name=".LoginActivity">

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

        </activity>
        <activity android:name=".SignUpActivity">

        </activity>
        <activity android:name=".ResetPasswordActivity"></activity>
    </application>

</manifest>
  • Run the project and login with the credentials which you have used while signing up. You will get the following output.

2.3 Forgot Password – Send Reset Password Email

  • In this activity we can change our password by sending ResetPassword link in your registered email id.
  • Here we will take one EditText for Email Id and two buttons, on for Reset Password and one for going back to Login Activity.
  • Go to res ⇒ layout ⇒ activity_reset_password.xml and copy the following code.
<?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:id="@+id/activity_login"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:gravity="center"
  android:orientation="vertical"
  android:background="#87ceeb"
  android:paddingBottom="@dimen/activity_vertical_margin"
  android:paddingLeft="@dimen/activity_horizontal_margin"
  android:paddingRight="@dimen/activity_horizontal_margin"
  android:paddingTop="@dimen/activity_vertical_margin"
  tools:context="net.apptronix.www.firebase_authentication.ResetPasswordActivity">

 <LinearLayout
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_marginTop="30dp"
  android:gravity="center"
  android:orientation="vertical"
  android:padding="@dimen/activity_horizontal_margin">

 <TextView 
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_gravity="center_horizontal"
  android:padding="10dp"
  android:text="Forgot Password ?"
  android:textColor="#123"
  android:textSize="20dp" />

 <TextView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_marginBottom="10dp"
  android:gravity="center_horizontal"
  android:padding="@dimen/activity_horizontal_margin"
  android:text="Enter your registered Email Id. We will send you the reset password instructions."
  android:textColor="#800000"
  android:textSize="14dp" />

 <EditText
  android:id="@+id/email"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_marginBottom="10dp"
  android:layout_marginTop="20dp"
  android:hint="Enter Email Id"
  android:inputType="textEmailAddress"
  android:textColor="#123"
  android:textColorHint="#123" />

 <Button
  android:id="@+id/btn_reset"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_marginTop="20dip"
  android:textSize="20dp"
  android:onClick="reset"
  android:background="@color/colorAccent"
  android:text="Reset Password"
  android:textColor="#fff" />

 <Button
  android:id="@+id/login"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_marginTop="10dp"
  android:background="@null"
  android:onClick="login"
  android:text="Login"
  android:textSize="20dp"
  android:textColor="@color/colorAccent" />

 </LinearLayout>

 </LinearLayout>
  • Now Go to ResetPasswordActivity.java file and paste the following code just below the package line. Here we will use sendPasswordResetEmail() provided by Firebase, a method for sending password reset instructions to Email.
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;

public class ResetPasswordActivity extends AppCompatActivity {

    private EditText Email;
    private FirebaseAuth auth;
    ProgressDialog pd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_reset_password);
        Email = (EditText) findViewById(R.id.email);

        auth = FirebaseAuth.getInstance();

    }

    public void reset(View v)               //reset button
    {
        String email_id = Email.getText().toString().trim();

        if (TextUtils.isEmpty(email_id)) {
           Email.setError("Enter your registered email id");
            return;
        }

        pd=new ProgressDialog(this);
        pd.setMessage("Please Wait");
        pd.setCancelable(false);
        pd.show();

        auth.sendPasswordResetEmail(email_id)
                .addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        if (task.isSuccessful()) {
                            Toast.makeText(ResetPasswordActivity.this, "We have sent you instructions to reset your password!", Toast.LENGTH_SHORT).show();
                            pd.dismiss();
                            Email.setText("");
                        } else {
                            Toast.makeText(ResetPasswordActivity.this, "Failed to send reset email !! This Email is not registerd !!", Toast.LENGTH_SHORT).show();
                            pd.dismiss();
                        }

                    }
                });
    }

    public void login(View v)           //login button
    {
        startActivity(new Intent(this, LoginActivity.class));
        finish();
    }

}
  • Open AndroidManifest.xml file and make ResetPasswordActivity as launcher activity (for now) and test the activity.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="net.apptronix.www.firebase_authentication">

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="Firebase"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
        </activity>
        <activity android:name=".LoginActivity">
        </activity>
        <activity android:name=".SignUpActivity">
        </activity>
        <activity android:name=".ResetPasswordActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
  • Run the project and enter the registered Email Id to get the reset password instructions on the E-Mail. You will get the following output.

2.4 Profile Screen – Home Screen After Login Activity

  • Here in this activity we will take all the above features and make our app complete.
  • In this activity we will have Change Password Button, Change Email Button, Remove User Button & Sign Out Button.
  • Go to res ⇒ layout ⇒ activity_main.xml and copy the following code.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_login"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:background="#87ceeb"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="net.apptronix.www.firebase_authentication.LoginActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin">

        <EditText
            android:id="@+id/email"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Enter Email Id"
            android:inputType="textEmailAddress"
            android:maxLines="1"
            android:singleLine="true" />

        <EditText
            android:id="@+id/new_email"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Enter New Email Id"
            android:inputType="textEmailAddress"
            android:maxLines="1"
            android:singleLine="true" />

        <EditText
            android:id="@+id/newPassword"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:focusableInTouchMode="true"
            android:hint="New Password"
            android:inputType="textPassword"
            android:maxLines="1"
            android:singleLine="true" />

        <Button
            android:id="@+id/changeEmail"
            style="?android:textAppearanceSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:background="@color/colorPrimaryDark"
            android:text="Change"
            android:textColor="@android:color/white"
            android:textStyle="bold" />

        <Button
            android:id="@+id/changePass"
            style="?android:textAppearanceSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:background="@color/colorPrimaryDark"
            android:text="Change"
            android:textColor="@android:color/white"
            android:textStyle="bold" />

        <Button
            android:id="@+id/removeuser"
            style="?android:textAppearanceSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:background="@color/colorPrimaryDark"
            android:text="Remove"
            android:textColor="@android:color/white"
            android:textStyle="bold" />

        <Button
            android:id="@+id/change_email_btn"
            style="?android:textAppearanceSmall"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:text="Change Email"
            android:textStyle="bold" />

        <Button
            android:id="@+id/change_password_btn"
            style="?android:textAppearanceSmall"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:text="Change Password"
            android:textStyle="bold" />

        <Button
            android:id="@+id/remove_user_btn"
            style="?android:textAppearanceSmall"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:text="Remove User"
            android:textStyle="bold" />

        <Button
            android:id="@+id/sign_out"
            style="?android:textAppearanceSmall"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:background="@color/colorPrimary"
            android:text="Sign Out"
            android:textColor="@android:color/white"
            android:textStyle="bold" />

    </LinearLayout>

</LinearLayout>
  • Now Go to MainActivity.java file and paste the following code just below the package line. Here we will use updateEmail(), updatePassword(), delete() and signOut()  provided by Firebase, for updating email, updating password, deleting user and sign out.
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;

public class MainActivity extends AppCompatActivity {

Button btnChangeEmail, btnChangePassword, btnRemoveUser,
  changeEmail, changePassword, remove, signOut;

EditText oldEmail, newEmail, newPassword;

FirebaseAuth.AuthStateListener authListener;
FirebaseAuth auth;

ProgressDialog pd;

 @Override
  protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

 auth = FirebaseAuth.getInstance();

 final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); //get current user

 authListener = new FirebaseAuth.AuthStateListener() {
  @Override
  public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
  FirebaseUser user = firebaseAuth.getCurrentUser();
  if (user == null) {
  startActivity(new Intent(MainActivity.this, LoginActivity.class));
  finish();
  }
  }
  };

 btnChangeEmail = (Button) findViewById(R.id.change_email_btn);
  btnChangePassword = (Button) findViewById(R.id.change_password_btn);
  btnRemoveUser = (Button) findViewById(R.id.remove_user_btn);
  changeEmail = (Button) findViewById(R.id.changeEmail);
  changePassword = (Button) findViewById(R.id.changePass);
  remove = (Button) findViewById(R.id.removeuser);
  signOut = (Button) findViewById(R.id.sign_out);
  oldEmail = (EditText) findViewById(R.id.email);
  newEmail = (EditText) findViewById(R.id.new_email);
  newPassword = (EditText) findViewById(R.id.newPassword);
  oldEmail.setVisibility(View.GONE);
  newEmail.setVisibility(View.GONE);
  newPassword.setVisibility(View.GONE);
  changeEmail.setVisibility(View.GONE);
  changePassword.setVisibility(View.GONE);
  remove.setVisibility(View.GONE);

 btnChangeEmail.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
  oldEmail.setVisibility(View.GONE);
  newEmail.setVisibility(View.VISIBLE);
  newPassword.setVisibility(View.GONE);
  changeEmail.setVisibility(View.VISIBLE);
  changePassword.setVisibility(View.GONE);
  remove.setVisibility(View.GONE);
  }
  });

 changeEmail.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {

 if (user != null && !newEmail.getText().toString().trim().equals("")) {
  pd=new ProgressDialog(MainActivity.this);
  pd.setMessage("Please Wait");
  pd.setCancelable(false);
  pd.show();
  user.updateEmail(newEmail.getText().toString().trim())
  .addOnCompleteListener(new OnCompleteListener<Void>() {
  @Override
  public void onComplete(@NonNull Task<Void> task) {
  if (task.isSuccessful()) {
  pd.dismiss();
  Toast.makeText(MainActivity.this, "Congrats! Email address is updated. Please sign in with new email id!", Toast.LENGTH_LONG).show();
  signOut();

 } else {
  pd.dismiss();;
  Toast.makeText(MainActivity.this, "Failed to update email!", Toast.LENGTH_LONG).show();

 }
  }
  });
  } else if (newEmail.getText().toString().trim().equals("")) {
  newEmail.setError("Enter email");

 }
  }
  });

 btnChangePassword.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
  oldEmail.setVisibility(View.GONE);
  newEmail.setVisibility(View.GONE);
  newPassword.setVisibility(View.VISIBLE);
  changeEmail.setVisibility(View.GONE);
  changePassword.setVisibility(View.VISIBLE);
  remove.setVisibility(View.GONE);
  }
  });

 changePassword.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {

 if (user != null && !newPassword.getText().toString().trim().equals("")) {
  pd=new ProgressDialog(MainActivity.this);
  pd.setMessage("Please Wait");
  pd.setCancelable(false);
  pd.show();
  if (newPassword.getText().toString().trim().length() < 6) {
  newPassword.setError("Password too short, enter minimum 6 characters");

 } else {
  user.updatePassword(newPassword.getText().toString().trim())
  .addOnCompleteListener(new OnCompleteListener<Void>() {
  @Override
  public void onComplete(@NonNull Task<Void> task) {
  if (task.isSuccessful()) {
  Toast.makeText(MainActivity.this, "Password is updated, sign in with new password!", Toast.LENGTH_SHORT).show();
  signOut();
  pd.dismiss();

 } else {
  Toast.makeText(MainActivity.this, "Failed to update password!", Toast.LENGTH_SHORT).show();
  pd.dismiss();
  }
  }
  });
  }
  } else if (newPassword.getText().toString().trim().equals("")) {
  newPassword.setError("Enter password");

 }
  }
  });

 btnRemoveUser.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {

 if (user != null) {
  pd=new ProgressDialog(MainActivity.this);
  pd.setMessage("Please Wait");
  pd.setCancelable(false);
  pd.show();
  user.delete()
  .addOnCompleteListener(new OnCompleteListener<Void>() {
  @Override
  public void onComplete(@NonNull Task<Void> task) {
  if (task.isSuccessful()) {
  Toast.makeText(MainActivity.this, "Your profile is deleted !! Create a new account now!", Toast.LENGTH_SHORT).show();
  startActivity(new Intent(MainActivity.this, SignUpActivity.class));
  finish();
  pd.dismiss();

 } else {
  Toast.makeText(MainActivity.this, "Failed to delete your account!", Toast.LENGTH_SHORT).show();
  pd.dismiss();
  }
  }
  });
  }
  }
  });

 signOut.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
  signOut();
  }
  });

 }

 //sign out method
  public void signOut() {
  auth.signOut();
  }

 @Override
  protected void onResume() {
  super.onResume();

 }

 @Override
  public void onStart() {
  super.onStart();
  auth.addAuthStateListener(authListener);
  }

 @Override
  public void onStop() {
  super.onStop();
  if (authListener != null) {
  auth.removeAuthStateListener(authListener);
  }
  }
 }
  • Lastly Open AndroidManifest.xml file and make following changes.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="net.apptronix.www.firebase_authentication">

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="Firebase"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
        </activity>
        <activity android:name=".LoginActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".SignUpActivity">
        </activity>
        <activity android:name=".ResetPasswordActivity"></activity>
    </application>

</manifest>
  • Run the project and test the complete app. You will get the following output.
  • So in this tutorial we learnt about the basics of Firebase. We will be soon posting more tutorials on Firebase.
  • Thank you for visiting our tutorial. If you have any doubts or queries regarding this, you can comment below in our comment section. Don’t forget to share the tutorial if you like it.

Share this post

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to Posts