Android Firebase User Login Authentication with Email Password Tutorial

How to create user login activity with Firebase real time database to sign in using registered Email, Password and Redirect to Profile activity.

Hello Guys are, In our last tutorial we have learn about Email Registration with Firebase. This tutorial is the second part of that tutorial. In this tutorial we would going to implement Firebase User Login Authentication in our android app.

Before going further please read my previous tutorial about Android Firebase  User Email Registration Authentication. I personally recommended this tutorial for every developer who is going to implement Firebase Login in their application. Because there is no Login without Registration. So let’s get started .

Project Description( Must Read ) : In this tutorial there are three activities with three different layout files.

Activity in this project :

  1. MainActivity.java :- In MainActivity file we have performing the user Registration functionality.
  2. LoginActivity.java  :- In LoginActivity file we have performing the user Login functionality.
  3. UserProfileActivity.java :- In UserProfileActivity file we have showing the logged in user Email with Log out button.

Layout files in this project :

  1. activity_main.xml 
  2. activity_login.xml
  3. activity_user_profile.xml

Contents in this project Firebase User Login Authentication with Email Password Tutorial :

  1. Start a new android application project.
  2. Create, configure and connect Firebase project to your Android Studio Application.
  3. Add internet permission.
  4. Read my previous tutorial about Registration Authentication.
  5. Adding New Login Activity and User Profile activity in your project.
  6. Adding Two EditText and Two buttons in activity_login.xml file.
  7. Creating EditText, Button, String, Boolean, FirebaseAuth, Progress Dialog objects in LoginActivity.java file.
  8. Assign ID’s to EditText, Button and initialize FirebaseAuth in LoginActivity.java file.
  9. Checking if user already logged in before and not logged out properly LoginActivity.java file.
  10. Adding click listener on Login button LoginActivity.java file.
  11. Creating Function CheckEditTextIsEmptyOrNot() to check EditText is empty or not in LoginActivity.java file.
  12. Calling CheckEditTextIsEmptyOrNot() function inside the button click listener LoginActivity.java file.
  13. Creating function LoginFunction() and inside that create signInWithEmailAndPassword() method with FirebaseAuth object LoginActivity.java file.
  14. Adding If condition in button click listener and call LoginFunction() inside it LoginActivity.java file.
  15. Add 1 TextView and 1 Button in activity_user_profile.xml file.
  16. Creating EditText, Button, FirebaseAuth, FirebaseUser, Progress Dialog objects in UserProfileActivity.java file.
  17. Assign ID’s to EditText, Button and initialize FirebaseAuth in UserProfileActivity.java file.
  18. On activity start check whether there is user previously logged in or not in UserProfileActivity.java file.
  19. Adding firebaseAuth current user info into firebaseUser object in UserProfileActivity.java file.
  20. Getting logged in user email from firebaseUser.getEmail() method and set into TextView in UserProfileActivity.java file.
  21. Adding click listener on logout button in UserProfileActivity.java file.
  22. Complete source code.

1. Start a new android application project.

2. Create, configure and connect Firebase project to your Android Studio Application :-

1. Open firebase.google.com .

2. Click on Get Started button present on home screen.

Connect Firebase Project

3. Now log in with your Google Gmail ID.

4. Click on Add Project.

5. Enter your project name and select your country then click on CREATE PROJECT .

6. Click on Add firebase to your android app icon.

7. Create a fresh project in Android Studio.

8. Now Add application Package Name, App Nick Name, SHA-1 certificate. To get the SHA-1 certificate from Android Studio read my this tutorial, it is the easiest method to get SHA-1 certificate.

9. Now hit the Register App button.

10. Here you go now your google-services.json file has been successfully generated. Hit the Download google-services.json button to download this file physically into your computer.

11. Next step is to add google-services.json inside your project. So open your project and put( Copy ) google-services.json file inside YourProjectName/app folder. For example my firebase project name is Firebase-AndroidJSon.com then my app folder located is Firebase-AndroidJSon.com/app . Now copy the google-services.json file into app folder like i did in below screenshot.

12. Now open your Project’s build.gradle(Project) file.

13. Add classpath ‘com.google.gms:google-services:3.0.0’ inside dependencies block.

14. Open your project’s build.gradle(Module:app) file.

15. Add compile ‘com.google.firebase:firebase-auth:9.2.1’ inside dependencies block .

16. Then add apply plugin: ‘com.google.gms.google-services’ at the bottom of the page.

17. Now finally add below packagingOptions just bottom of buildTypes block like i did.

packagingOptions{
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/LICENSE-FIREBASE.txt'
    exclude 'META-INF/NOTICE'

}

Final Screenshot :

18. Now next step is to Enable Firebase User Email Registration Authentication from Firebase Panel in Authentication section. So click on Authentication -> SIGN-IN-METHOD . Select Email/Password .

login

19. Enable Email/Password From Panel and hit the SAVE button.

3. Add internet permission to your project :

Open your project’s AndroidManifest.xml file and copy the below permission inside it. You will find the full AndroidManifest.xml file code at the bottom of this page along with all source code.

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

4. Read my previous tutorial about Registration Authentication.

5. Adding New Login Activity and User Profile activity in your project : Right click on your Project Package name -> New -> Activity -> Empty Activity. Click on the below image to see it into full large size.

6. Adding Two EditText and Two buttons in activity_login.xml file.

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/textview1"
    android:gravity="center"
    android:textSize="21dp"
    android:textStyle="bold"
    android:text="Firebase Login"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="20dp"/>

<EditText
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:hint="Enter Your Email"
    android:id="@+id/editText_email"
    android:layout_below="@+id/textview1"
    android:layout_marginTop="20dp"/>

<EditText
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:hint="Enter Your Password"
    android:id="@+id/editText_password"
    android:layout_below="@+id/editText_email"
    android:layout_marginTop="20dp"/>

<Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Click Here to Login"
    android:id="@+id/button_login"
    android:layout_marginTop="14dp"
    android:layout_below="@+id/editText_password"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

<Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="NOT LOG-IN ? SIGN UP FROM HERE"
    android:id="@+id/button_SignUP"
    android:layout_marginTop="20dp"
    android:layout_below="@+id/button_login"/>

7. Creating EditText, Button, String, Boolean, FirebaseAuth, Progress Dialog objects in LoginActivity.java file.

// Creating EditText.
EditText email, password ;

// Creating string to hold values.
String EmailHolder, PasswordHolder;

// Creating buttons.
Button Login,SignUP ;

// Creating Boolean to hold EditText empty true false value.
Boolean EditTextEmptyCheck;

// Creating progress dialog.
ProgressDialog progressDialog;

// Creating FirebaseAuth object.
FirebaseAuth firebaseAuth;

8. Assign ID’s to EditText, Button and initialize FirebaseAuth in LoginActivity.java file.

// Assign ID's to EditText.
email = (EditText)findViewById(R.id.editText_email);
password = (EditText)findViewById(R.id.editText_password);

// Assign ID's to button.
Login = (Button)findViewById(R.id.button_login);
SignUP = (Button)findViewById(R.id.button_SignUP);

progressDialog =  new ProgressDialog(LoginActivity.this);

// Assign FirebaseAuth instance to FirebaseAuth object.
firebaseAuth = FirebaseAuth.getInstance();

9. Checking if user already logged in before and not logged out properly LoginActivity.java file.

if(firebaseAuth.getCurrentUser() != null){

    // Finishing current Login Activity.
    finish();

    // Opening UserProfileActivity .
    Intent intent = new Intent(LoginActivity.this, UserProfileActivity.class);
    startActivity(intent);
}

10. Adding click listener on Login button LoginActivity.java file.

// Adding click listener to login button.
Login.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

    }
});

11. Creating Function CheckEditTextIsEmptyOrNot() to check EditText is empty or not in LoginActivity.java file.

public void CheckEditTextIsEmptyOrNot(){

    // Getting value form Email's EditText and fill into EmailHolder string variable.
    EmailHolder = email.getText().toString().trim();

    // Getting value form Password's EditText and fill into PasswordHolder string variable.
    PasswordHolder = password.getText().toString().trim();

    // Checking Both EditText is empty or not.
    if(TextUtils.isEmpty(EmailHolder) || TextUtils.isEmpty(PasswordHolder))
    {

        // If any of EditText is empty then set value as false.
        EditTextEmptyCheck = false;

    }
    else {

        // If any of EditText is empty then set value as true.
        EditTextEmptyCheck = true ;

    }

}

12. Calling CheckEditTextIsEmptyOrNot() function inside the button click listener LoginActivity.java file.

// Adding click listener to login button.
Login.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

        // Calling method CheckEditTextIsEmptyOrNot().
        CheckEditTextIsEmptyOrNot();

    }
});

13. Creating function LoginFunction() and inside that create signInWithEmailAndPassword() method with FirebaseAuth object LoginActivity.java file.

// Creating login function.
public void LoginFunction(){

    // Setting up message in progressDialog.
    progressDialog.setMessage("Please Wait");

    // Showing progressDialog.
    progressDialog.show();

    // Calling  signInWithEmailAndPassword function with firebase object and passing EmailHolder and PasswordHolder inside it.
    firebaseAuth.signInWithEmailAndPassword(EmailHolder, PasswordHolder)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {

                    // If task done Successful.
                    if(task.isSuccessful()){

                        // Hiding the progress dialog.
                        progressDialog.dismiss();

                        // Closing the current Login Activity.
                        finish();


                        // Opening the UserProfileActivity.
                        Intent intent = new Intent(LoginActivity.this, UserProfileActivity.class);
                        startActivity(intent);
                    }
                    else {

                        // Hiding the progress dialog.
                        progressDialog.dismiss();

                        // Showing toast message when email or password not found in Firebase Online database.
                        Toast.makeText(LoginActivity.this, "Email or Password Not found, Please Try Again", Toast.LENGTH_LONG).show();
                    }
                }
            });

}

14. Adding If condition in button click listener and call LoginFunction() inside it LoginActivity.java file.

Login.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

        // Calling method CheckEditTextIsEmptyOrNot().
        CheckEditTextIsEmptyOrNot();

        // If  EditTextEmptyCheck == true
        if(EditTextEmptyCheck)
        {

            // If  EditTextEmptyCheck == true then login function called.
            LoginFunction();

        }
        else {

            // If  EditTextEmptyCheck == false then toast display on screen.
            Toast.makeText(LoginActivity.this, "Please Fill All the Fields", Toast.LENGTH_LONG).show();
        }


    }
});

15. Add 1 TextView and 1 Button in activity_user_profile.xml file.

<TextView
    android:id="@+id/user_email"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="30dp"
    android:gravity="center"
    android:textSize="20dp"
    android:textColor="#000"/>

<Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/logout"
    android:layout_below="@+id/user_email"
    android:text="Click Here To Logout"
    android:layout_marginTop="30dp"/>

16. Creating EditText, Button, FirebaseAuth, FirebaseUser, Progress Dialog objects in UserProfileActivity.java file.

// Creating button.
Button logout ;

// Creating TextView.
TextView userEmailShow ;

// Creating FirebaseAuth.
FirebaseAuth firebaseAuth ;

// Creating FirebaseAuth.
FirebaseUser firebaseUser;

17. Assign ID’s to EditText, Button and initialize FirebaseAuth in UserProfileActivity.java file.

// Assigning ID's to button and TextView.
logout = (Button)findViewById(R.id.logout);
userEmailShow = (TextView)findViewById(R.id.user_email);

// Adding FirebaseAuth instance to FirebaseAuth object.
firebaseAuth = FirebaseAuth.getInstance();

18. On activity start check whether there is user previously logged in or not in UserProfileActivity.java file.

// On activity start check whether there is user previously logged in or not.
if(firebaseAuth.getCurrentUser() == null){

    // Finishing current Profile activity.
    finish();

    // If user already not log in then Redirect to LoginActivity .
    Intent intent = new Intent(UserProfileActivity.this, LoginActivity.class);
    startActivity(intent);

    // Showing toast message.
    Toast.makeText(UserProfileActivity.this, "Please Log in to continue", Toast.LENGTH_LONG).show();

}

19. Adding firebaseAuth current user info into firebaseUser object in UserProfileActivity.java file.

firebaseUser = firebaseAuth.getCurrentUser();

20. Getting logged in user email from firebaseUser.getEmail() method and set into TextView in UserProfileActivity.java file.

userEmailShow.setText("Successfully Logged In, Your Email = " + firebaseUser.getEmail());

21. Adding click listener on logout button in UserProfileActivity.java file.

// Adding click listener on logout button.
logout.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

        // Destroying login season.
        firebaseAuth.signOut();

        // Finishing current User Profile activity.
        finish();

        // Redirect to Login Activity after click on logout button.
        Intent intent = new Intent(UserProfileActivity.this, LoginActivity.class);
        startActivity(intent);

        // Showing toast message on logout.
        Toast.makeText(UserProfileActivity.this, "Logged Out Successfully.", Toast.LENGTH_LONG).show();

    }
});

 22. Complete source code :

Code for MainActivity.java file.

package com.androidjson.firebaseuserloginregistration_androidjsoncom;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.app.ProgressDialog;
import android.support.annotation.NonNull;
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 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 MainActivity extends AppCompatActivity {

    // Creating EditText .
    EditText email, password ;

    // Creating button.
    Button SignUp, ButtonGoToLoginActivity;

    // Creating string to hold email and password .
    String EmailHolder, PasswordHolder ;

    // Creating Progress dialog.
    ProgressDialog progressDialog;

    // Creating FirebaseAuth object.
    FirebaseAuth firebaseAuth ;

    // Creating Boolean variable that holds EditText is empty or not status.
    Boolean EditTextStatus ;

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

        // Assigning layout email ID and Password ID.
        email = (EditText)findViewById(R.id.EditText_User_EmailID);
        password = (EditText)findViewById(R.id.EditText_User_Password);

        // Assign button layout ID.
        SignUp = (Button)findViewById(R.id.Button_SignUp);
        ButtonGoToLoginActivity = (Button)findViewById(R.id.Button_LoginActivity);

        // Creating object instance.
        firebaseAuth = FirebaseAuth.getInstance();

        progressDialog = new ProgressDialog(MainActivity.this);

        // Adding click listener to Sign Up Button.
        SignUp.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                // Calling method to check EditText is empty or no status.
                CheckEditTextIsEmptyOrNot();

                // If EditText is true then this block with execute.
                if(EditTextStatus){

                    // If EditText is not empty than UserRegistrationFunction method will call.
                    UserRegistrationFunction();

                }
                // If EditText is false then this block with execute.
                else {

                    Toast.makeText(MainActivity.this, "Please fill all form fields.", Toast.LENGTH_LONG).show();

                }

            }
        });

        // Adding click listener to ButtonGoToLoginActivity button.
        ButtonGoToLoginActivity.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                // Finishing current Main Activity.
                finish();

                // Opening the Login Activity using Intent.
                Intent intent = new Intent(MainActivity.this, LoginActivity.class);
                startActivity(intent);

            }
        });


    }

    // Creating UserRegistrationFunction
    public void UserRegistrationFunction(){

                // Showing progress dialog at user registration time.
                progressDialog.setMessage("Please Wait, We are Registering Your Data on Server");
                progressDialog.show();

                // Creating createUserWithEmailAndPassword method and pass email and password inside it.
                firebaseAuth.createUserWithEmailAndPassword(EmailHolder, PasswordHolder).
                        addOnCompleteListener(MainActivity.this, new OnCompleteListener<AuthResult>() {
                            @Override
                            public void onComplete(@NonNull Task<AuthResult> task) {

                                // Checking if user is registered successfully.
                                if(task.isSuccessful()){

                                    // If user registered successfully then show this toast message.
                                    Toast.makeText(MainActivity.this,"User Registration Successfully",Toast.LENGTH_LONG).show();

                                    firebaseAuth.signOut();

                                }else{

                                    // If something goes wrong.
                                    Toast.makeText(MainActivity.this,"Something Went Wrong.",Toast.LENGTH_LONG).show();
                                }

                                // Hiding the progress dialog after all task complete.
                                progressDialog.dismiss();

            }
        });

    }

    public void CheckEditTextIsEmptyOrNot(){

        // Getting name and email from EditText and save into string variables.
        EmailHolder = email.getText().toString().trim();
        PasswordHolder = password.getText().toString().trim();

        if(TextUtils.isEmpty(EmailHolder) || TextUtils.isEmpty(PasswordHolder))
        {

            EditTextStatus = false;

        }
        else {

            EditTextStatus = true ;
        }

    }

}

Code for activity_main.xml layout file.

<?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"
    android:layout_margin="20dp"
    tools:context="com.androidjson.firebaseuserloginregistration_androidjsoncom.MainActivity">

    <TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/textView"
    android:textSize="20dp"
    android:textColor="#000"
    android:text="Firebase User Registration Form"
    android:gravity="center"
    android:layout_marginTop="60dp"
    />

    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/EditText_User_EmailID"
        android:hint="Enter Your Email Here"
        android:gravity="center"
        android:layout_below="@+id/textView"
        android:layout_marginTop="20dp"
        />

    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/EditText_User_Password"
        android:hint="Enter Your Password Here"
        android:gravity="center"
        android:inputType="textPassword"
        android:layout_below="@+id/EditText_User_EmailID"
        android:layout_marginTop="20dp"/>

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/Button_SignUp"
        android:layout_below="@+id/EditText_User_Password"
        android:text="Click Here To Sign Up"
        android:layout_marginTop="20dp"/>

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/Button_LoginActivity"
        android:layout_below="@+id/Button_SignUp"
        android:text="ALREADY SIGN UP ? LOGIN FROM HERE"
        android:layout_marginTop="20dp"/>

    </RelativeLayout>

 

Code for LoginActivity.java file.

package com.androidjson.firebaseuserloginregistration_androidjsoncom;
import android.app.ProgressDialog;
import android.content.Intent;
import android.support.annotation.MainThread;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
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.AuthResult;
import com.google.firebase.auth.FirebaseAuth;

public class LoginActivity extends AppCompatActivity {

    // Creating EditText.
    EditText email, password ;

    // Creating string to hold values.
    String EmailHolder, PasswordHolder;

    // Creating buttons.
    Button Login,SignUP ;

    // Creating Boolean to hold EditText empty true false value.
    Boolean EditTextEmptyCheck;

    // Creating progress dialog.
    ProgressDialog progressDialog;

    // Creating FirebaseAuth object.
    FirebaseAuth firebaseAuth;

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

        // Assign ID's to EditText.
        email = (EditText)findViewById(R.id.editText_email);
        password = (EditText)findViewById(R.id.editText_password);

        // Assign ID's to button.
        Login = (Button)findViewById(R.id.button_login);
        SignUP = (Button)findViewById(R.id.button_SignUP);

        progressDialog =  new ProgressDialog(LoginActivity.this);

        // Assign FirebaseAuth instance to FirebaseAuth object.
        firebaseAuth = FirebaseAuth.getInstance();


        // Checking if user already logged in before and not logged out properly.
        if(firebaseAuth.getCurrentUser() != null){

            // Finishing current Login Activity.
            finish();

            // Opening UserProfileActivity .
            Intent intent = new Intent(LoginActivity.this, UserProfileActivity.class);
            startActivity(intent);
        }


        // Adding click listener to login button.
        Login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                // Calling method CheckEditTextIsEmptyOrNot().
                CheckEditTextIsEmptyOrNot();

                // If  EditTextEmptyCheck == true
                if(EditTextEmptyCheck)
                {

                    // If  EditTextEmptyCheck == true then login function called.
                    LoginFunction();

                }
                else {

                    // If  EditTextEmptyCheck == false then toast display on screen.
                    Toast.makeText(LoginActivity.this, "Please Fill All the Fields", Toast.LENGTH_LONG).show();
                }


            }
        });

        // Adding click listener to Sign up button.
        SignUP.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                // Closing current activity.
                finish();

                // Opening the Main Activity .
                Intent intent = new Intent(LoginActivity.this, MainActivity.class);
                startActivity(intent);

            }
        });
    }

    // Creating method to check EditText is empty or not.
    public void CheckEditTextIsEmptyOrNot(){

        // Getting value form Email's EditText and fill into EmailHolder string variable.
        EmailHolder = email.getText().toString().trim();

        // Getting value form Password's EditText and fill into PasswordHolder string variable.
        PasswordHolder = password.getText().toString().trim();

        // Checking Both EditText is empty or not.
        if(TextUtils.isEmpty(EmailHolder) || TextUtils.isEmpty(PasswordHolder))
        {

            // If any of EditText is empty then set value as false.
            EditTextEmptyCheck = false;

        }
        else {

            // If any of EditText is empty then set value as true.
            EditTextEmptyCheck = true ;

        }

    }

    // Creating login function.
    public void LoginFunction(){

        // Setting up message in progressDialog.
        progressDialog.setMessage("Please Wait");

        // Showing progressDialog.
        progressDialog.show();

        // Calling  signInWithEmailAndPassword function with firebase object and passing EmailHolder and PasswordHolder inside it.
        firebaseAuth.signInWithEmailAndPassword(EmailHolder, PasswordHolder)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {

                        // If task done Successful.
                        if(task.isSuccessful()){

                            // Hiding the progress dialog.
                            progressDialog.dismiss();

                            // Closing the current Login Activity.
                            finish();


                            // Opening the UserProfileActivity.
                            Intent intent = new Intent(LoginActivity.this, UserProfileActivity.class);
                            startActivity(intent);
                        }
                        else {

                            // Hiding the progress dialog.
                            progressDialog.dismiss();

                            // Showing toast message when email or password not found in Firebase Online database.
                            Toast.makeText(LoginActivity.this, "Email or Password Not found, Please Try Again", Toast.LENGTH_LONG).show();
                        }
                    }
                });

    }

}

Code for activity_login.xml layout file.

<?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="com.androidjson.firebaseuserloginregistration_androidjsoncom.LoginActivity"
    android:layout_margin="20dp">

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textview1"
        android:gravity="center"
        android:textSize="21dp"
        android:textStyle="bold"
        android:text="Firebase Login"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20dp"/>

    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:hint="Enter Your Email"
        android:id="@+id/editText_email"
        android:layout_below="@+id/textview1"
        android:layout_marginTop="20dp"/>

    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:hint="Enter Your Password"
        android:id="@+id/editText_password"
        android:layout_below="@+id/editText_email"
        android:layout_marginTop="20dp"/>

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Click Here to Login"
        android:id="@+id/button_login"
        android:layout_marginTop="14dp"
        android:layout_below="@+id/editText_password"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="NOT LOG-IN ? SIGN UP FROM HERE"
        android:id="@+id/button_SignUP"
        android:layout_marginTop="20dp"
        android:layout_below="@+id/button_login"/>


</RelativeLayout>

 

Code for UserProfileActivity.java file.

package com.androidjson.firebaseuserloginregistration_androidjsoncom;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;

public class UserProfileActivity extends AppCompatActivity {

    // Creating button.
    Button logout ;

    // Creating TextView.
    TextView userEmailShow ;

    // Creating FirebaseAuth.
    FirebaseAuth firebaseAuth ;

    // Creating FirebaseAuth.
    FirebaseUser firebaseUser;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_user_profile);

        // Assigning ID's to button and TextView.
        logout = (Button)findViewById(R.id.logout);
        userEmailShow = (TextView)findViewById(R.id.user_email);

        // Adding FirebaseAuth instance to FirebaseAuth object.
        firebaseAuth = FirebaseAuth.getInstance();

        // On activity start check whether there is user previously logged in or not.
        if(firebaseAuth.getCurrentUser() == null){

            // Finishing current Profile activity.
            finish();

            // If user already not log in then Redirect to LoginActivity .
            Intent intent = new Intent(UserProfileActivity.this, LoginActivity.class);
            startActivity(intent);

            // Showing toast message.
            Toast.makeText(UserProfileActivity.this, "Please Log in to continue", Toast.LENGTH_LONG).show();

        }

        // Adding firebaseAuth current user info into firebaseUser object.
        firebaseUser = firebaseAuth.getCurrentUser();

        // Getting logged in user email from firebaseUser.getEmail() method and set into TextView.
        userEmailShow.setText("Successfully Logged In, Your Email = " + firebaseUser.getEmail());

        // Adding click listener on logout button.
        logout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                // Destroying login season.
                firebaseAuth.signOut();

                // Finishing current User Profile activity.
                finish();

                // Redirect to Login Activity after click on logout button.
                Intent intent = new Intent(UserProfileActivity.this, LoginActivity.class);
                startActivity(intent);

                // Showing toast message on logout.
                Toast.makeText(UserProfileActivity.this, "Logged Out Successfully.", Toast.LENGTH_LONG).show();

            }
        });


    }
}

Code for activity_user_profile.xml layout file.

<?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"
    android:padding="20dp"
    tools:context="com.androidjson.firebaseuserloginregistration_androidjsoncom.UserProfileActivity">

    <TextView
        android:id="@+id/user_email"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="30dp"
        android:gravity="center"
        android:textSize="20dp"
        android:textColor="#000"/>

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/logout"
        android:layout_below="@+id/user_email"
        android:text="Click Here To Logout"
        android:layout_marginTop="30dp"/>

</RelativeLayout>

 

Code for AndroidManifest.xml file.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.androidjson.firebaseuserloginregistration_androidjsoncom">

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

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

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

</manifest>

Screenshots :

Download Source Code

Leave a Reply

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