Skip to content
Related Articles

Related Articles

Improve Article

Implement Splash Screen and Authentication in Social Media Android App

  • Last Updated : 17 Jun, 2021

This is the Part 1 of “Build a Social Media App on Android Studio” tutorial, and we are going to cover the following functionalities in this article:

  • Creating a Splash Screen
  • Authentication Part:
    • Registration, and
    • Login

Step By Step Implementation

Step 1: Create a New Project

To create a new project in Android Studio please refer to How to Create/Start a New Project in Android Studio. Note that select Java as the programming language.

Step 2: Connect your app to firebase 

Go to the Tools > Firebase > Authentication and connect your app to firebase and also add the firebase authentication SDK to your app like the following image.



Then go to the Firebase Console > Authentication > Sign-in method and Enable the Email/Password.

Step 3: Create 4 new empty activities

Go to the package name > right-click > New > Activity > Empty Activity and name the activity as SpalshScreen, RegistrationActivity, LoginActivity, and DashboardActivity. You may also refer to this article How to create new empty activity in android studio.

Step 4: Working with the SpalshScreen Activity

Navigate to the app > res > layout > activity_spalsh_screen.xml and add the below code to that file. Below is the code for the activity_spalsh_screen.xml file. 

XML






<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background_color"
 
    tools:context=".SpalshScreen">
 
</androidx.constraintlayout.widget.ConstraintLayout>

 

 

Working with the SpalshScreen.java file. Here we are checking that if the user is null then go to LoginActivity. Else move to DashboardActivity.

 

new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                FirebaseUser user=mAuth.getCurrentUser();
                if(user==null){
                    Intent intent = new Intent(SpalshScreen.this, LoginActivity.class);
                    startActivity(intent);
                    finish();
                }
                else {
                    Intent mainIntent= new Intent(SpalshScreen.this, DashboardActivity.class);
                    mainIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                    startActivity(mainIntent);
                    finish();
                }
            }
      },1000);

 

Below is the code for the SpalshScreen.java file.

 

Java




package com.example.socialmediaapp;
 
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
 
import androidx.appcompat.app.AppCompatActivity;
 
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
 
public class SpalshScreen extends AppCompatActivity {
 
    FirebaseUser currentUser;
    private FirebaseAuth mAuth;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_spalsh_screen);
        mAuth = FirebaseAuth.getInstance();
        if (mAuth != null) {
            currentUser = mAuth.getCurrentUser();
        }
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                FirebaseUser user = mAuth.getCurrentUser();
                if (user == null) {
                    Intent intent = new Intent(SpalshScreen.this, LoginActivity.class);
                    startActivity(intent);
                    finish();
                } else {
                    Intent mainIntent = new Intent(SpalshScreen.this, DashboardActivity.class);
                    mainIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                    startActivity(mainIntent);
                    finish();
                }
            }
        }, 1000);
    }
}

 

 



Step 5: Working with the RegistrationActivity Activity

 

Navigate to the app > res > layout > activity_registration.xml and add the below code to that file. Below is the code for the activity_registration.xml file.  Here we have created three EditText for the name, email and password and one Button to Register user.

 

XML




<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".RegistrationActivity">
 
    <TextView
        android:id="@+id/techer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="50dp"
        android:gravity="center"
        android:text="Sign Up Here"
        android:textColor="@color/colorBlack"
        android:textSize="28sp"
        android:textStyle="bold|italic" />
 
    <TextView
        android:id="@+id/names"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/techer"
        android:layout_marginStart="35dp"
        android:layout_marginTop="120dp"
        android:text="Name"
        android:textColor="@color/colorBlack" />
 
    <EditText
        android:id="@+id/register_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/names"
        android:layout_alignParentStart="true"
        android:layout_marginLeft="30dp"
        android:layout_marginTop="10dp"
        android:layout_marginRight="30dp"
        android:background="@drawable/edit"
        android:drawableStart="@drawable/name"
        android:hint="Your Name..."
        android:inputType="text"
        android:padding="8dp" />
 
    <TextView
        android:id="@+id/email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/register_name"
        android:layout_marginStart="35dp"
        android:layout_marginTop="10dp"
        android:text="Email"
        android:textColor="@color/colorBlack" />
 
    <EditText
        android:id="@+id/register_email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/email"
        android:layout_alignParentStart="true"
        android:layout_marginLeft="30dp"
        android:layout_marginTop="10dp"
        android:layout_marginRight="30dp"
        android:background="@drawable/edit"
        android:drawableStart="@drawable/ic_email"
        android:hint="Email..."
        android:inputType="textEmailAddress"
        android:padding="8dp" />
 
    <TextView
        android:id="@+id/pass"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/register_email"
        android:layout_marginStart="35dp"
        android:layout_marginTop="10dp"
        android:text="Password"
        android:textColor="@color/colorBlack" />
 
    <EditText
        android:id="@+id/register_password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/pass"
        android:layout_alignParentStart="true"
        android:layout_marginLeft="30dp"
        android:layout_marginTop="10dp"
        android:layout_marginRight="30dp"
        android:background="@drawable/edit"
        android:drawableStart="@drawable/password"
        android:hint="Password..."
        android:inputType="textPassword"
        android:padding="8dp" />
 
    <Button
        android:id="@+id/register_button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/register_password"
        android:layout_marginLeft="30dp"
        android:layout_marginTop="30dp"
        android:layout_marginRight="30dp"
        android:background="@drawable/buttonss"
        android:padding="4dp"
        android:text="Create Account"
        android:textAllCaps="false"
        android:textColor="@android:color/background_light"
        android:textSize="24sp" />
 
    <TextView
        android:id="@+id/homepage"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/register_button"
        android:layout_centerHorizontal="true"
        android:layout_marginStart="15dp"
        android:layout_marginTop="20dp"
        android:layout_marginEnd="23dp"
        android:text=" Already Have a Account?Sign In"
        android:textAlignment="center"
        android:textColor="@color/colorBlack"
        android:textSize="17sp"
        android:textStyle="bold" />
 
</RelativeLayout>

 

 

Working with the RegistrationActivity.java file. Creating a user with the email and password written by the user. If it fails then we will be showing the error.

 

mAuth.createUserWithEmailAndPassword(emaill, pass).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()){
                    progressDialog.dismiss();
                }
                else {
                    progressDialog.dismiss();
                    Toast.makeText(RegistrationActivity.this,"Error",Toast.LENGTH_LONG).show();
                }
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                progressDialog.dismiss();
                Toast.makeText(RegistrationActivity.this,"Error Occured",Toast.LENGTH_LONG).show();
            }
     });

 



Below is the code for the RegistrationActivity.java file.

 

Java




package com.example.socialmediaapp;
 
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.util.Patterns;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
 
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
 
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
 
import java.util.HashMap;
 
public class RegistrationActivity extends AppCompatActivity {
 
    private EditText email, password, name;
    private Button mRegister;
    private TextView existaccount;
    private ProgressDialog progressDialog;
    private FirebaseAuth mAuth;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_registration);
        ActionBar actionBar = getSupportActionBar();
        actionBar.setTitle("Create Account");
        actionBar.setDisplayShowHomeEnabled(true);
        actionBar.setDisplayHomeAsUpEnabled(true);
        email = findViewById(R.id.register_email);
        name = findViewById(R.id.register_name);
        password = findViewById(R.id.register_password);
        mRegister = findViewById(R.id.register_button);
        existaccount = findViewById(R.id.homepage);
        mAuth = FirebaseAuth.getInstance();
        progressDialog = new ProgressDialog(this);
        progressDialog.setMessage("Register");
         
        mRegister.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String emaill = email.getText().toString().trim();
                String uname = name.getText().toString().trim();
                String pass = password.getText().toString().trim();
                if (!Patterns.EMAIL_ADDRESS.matcher(emaill).matches()) {
                    email.setError("Invalid Email");
                    email.setFocusable(true);
                } else if (pass.length() < 6) {
                    password.setError("Length Must be greater than 6 character");
                    password.setFocusable(true);
                } else {
                    registerUser(emaill, pass, uname);
                }
            }
        });
        existaccount.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(RegistrationActivity.this, LoginActivity.class));
            }
        });
    }
 
    private void registerUser(String emaill, final String pass, final String uname) {
        progressDialog.show();
        mAuth.createUserWithEmailAndPassword(emaill, pass).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()) {
                    progressDialog.dismiss();
                    FirebaseUser user = mAuth.getCurrentUser();
                    String email = user.getEmail();
                    String uid = user.getUid();
                    HashMap<Object, String> hashMap = new HashMap<>();
                    hashMap.put("email", email);
                    hashMap.put("uid", uid);
                    hashMap.put("name", uname);
                    hashMap.put("onlineStatus", "online");
                    hashMap.put("typingTo", "noOne");
                    hashMap.put("image", "");
                    FirebaseDatabase database = FirebaseDatabase.getInstance();
                    DatabaseReference reference = database.getReference("Users");
                    reference.child(uid).setValue(hashMap);
                    Toast.makeText(RegistrationActivity.this, "Registered User " + user.getEmail(), Toast.LENGTH_LONG).show();
                    Intent mainIntent = new Intent(RegistrationActivity.this, DashboardActivity.class);
                    mainIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                    startActivity(mainIntent);
                    finish();
                } else {
                    progressDialog.dismiss();
                    Toast.makeText(RegistrationActivity.this, "Error", Toast.LENGTH_LONG).show();
                }
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                progressDialog.dismiss();
                Toast.makeText(RegistrationActivity.this, "Error Occured", Toast.LENGTH_LONG).show();
            }
        });
    }
 
    @Override
    public boolean onSupportNavigateUp() {
        onBackPressed();
        return super.onSupportNavigateUp();
    }
}

 

 

Step 6: Working with the LoginActivity Activity

 

Navigate to the app > res > layout > activity_login.xml and add the below code to that file. Below is the code for the activity_login.xml file. Here We are creating two EditText for email and password and one Button to Login.

 

XML






<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".LoginActivity">
 
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true">
 
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
 
            <TextView
                android:id="@+id/welcom"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginStart="120dp"
                android:layout_marginTop="50dp"
                android:text="Welcome!"
                android:textColor="@color/colorBlack"
                android:textSize="30sp"
                android:textStyle="italic|bold" />
 
            <TextView
                android:id="@+id/email"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/welcom"
                android:layout_marginStart="35dp"
                android:layout_marginTop="120dp"
                android:text="Email"
                android:textColor="@color/colorBlack" />
 
            <EditText
                android:id="@+id/login_email"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/email"
                android:layout_alignParentStart="true"
                android:layout_marginLeft="30dp"
                android:layout_marginTop="5dp"
                android:layout_marginRight="30dp"
                android:background="@drawable/edit"
                android:drawableStart="@drawable/ic_email"
                android:hint="Email..."
                android:inputType="textEmailAddress"
                android:padding="8dp" />
 
            <TextView
                android:id="@+id/password"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/login_email"
                android:layout_marginStart="32dp"
                android:layout_marginTop="20dp"
                android:text="Password"
                android:textColor="@color/colorBlack" />
 
            <EditText
                android:id="@+id/login_password"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/password"
                android:layout_alignParentStart="true"
                android:layout_marginLeft="30dp"
                android:layout_marginTop="5dp"
                android:layout_marginRight="30dp"
                android:background="@drawable/edit"
                android:drawableStart="@drawable/password"
                android:hint="Password..."
                android:inputType="textPassword"
                android:padding="8dp" />
 
            <TextView
                android:id="@+id/forgetp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/login_password"
                android:layout_marginStart="210dp"
                android:layout_marginTop="15dp"
                android:layout_marginEnd="23dp"
                android:text="Forget Password?"
                android:textAlignment="center"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="17sp"
                android:textStyle="bold" />
 
            <Button
                android:id="@+id/login_button"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/forgetp"
                android:layout_marginLeft="30dp"
                android:layout_marginTop="15dp"
                android:layout_marginRight="30dp"
                android:background="@drawable/buttonss"
                android:padding="4dp"
                android:text="Login"
                android:textAllCaps="false"
                android:textColor="@android:color/background_light"
                android:textSize="24sp" />
 
            <TextView
                android:id="@+id/needs_new_account"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/login_button"
                android:layout_centerHorizontal="true"
                android:layout_marginStart="15dp"
                android:layout_marginTop="20dp"
                android:layout_marginEnd="23dp"
                android:text="Need new Account?Sign Up Here"
                android:textAlignment="center"
                android:textColor="@color/colorPrimary"
                android:textSize="17sp"
                android:textStyle="bold" />
        </RelativeLayout>
 
    </ScrollView>
 
</LinearLayout>

 

 

Working with the LoginActivity.java file. Signing in user with the email and password written by the user. If it fails then we will be showing the error.

 

mAuth.signInWithEmailAndPassword(emaill, pass).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {

                if (task.isSuccessful()) {
                    loadingBar.dismiss();

                }
                else {
                    loadingBar.dismiss();
                    Toast.makeText(LoginActivity.this,"Login Failed",Toast.LENGTH_LONG).show();
                }
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                loadingBar.dismiss();
                Toast.makeText(LoginActivity.this,"Error Occured",Toast.LENGTH_LONG).show();
            }
    });

 

Below is the code for the LoginActivity.java file.

 

Java




package com.example.socialmediaapp;
 
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.text.InputType;
import android.util.Patterns;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
 
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
 
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
 
import java.util.HashMap;
 
public class LoginActivity extends AppCompatActivity {
 
    private EditText email, password, name;
    private Button mlogin;
    private TextView newdnewaccount, reocverpass;
    FirebaseUser currentUser;
    private ProgressDialog loadingBar;
    private FirebaseAuth mAuth;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        ActionBar actionBar = getSupportActionBar();
        actionBar.setTitle("Create Account");
        actionBar.setDisplayShowHomeEnabled(true);
        actionBar.setDisplayHomeAsUpEnabled(true);
         
        // initialising the layout items
        email = findViewById(R.id.login_email);
        password = findViewById(R.id.login_password);
        newdnewaccount = findViewById(R.id.needs_new_account);
        reocverpass = findViewById(R.id.forgetp);
        mAuth = FirebaseAuth.getInstance();
        mlogin = findViewById(R.id.login_button);
        loadingBar = new ProgressDialog(this);
        mAuth = FirebaseAuth.getInstance();
         
        // checking if user is null or not
        if (mAuth != null) {
            currentUser = mAuth.getCurrentUser();
        }
 
        mlogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String emaill = email.getText().toString().trim();
                String pass = password.getText().toString().trim();
                 
                // if format of email doesn't matches return null
                if (!Patterns.EMAIL_ADDRESS.matcher(emaill).matches()) {
                    email.setError("Invalid Email");
                    email.setFocusable(true);
 
                } else {
                    loginUser(emaill, pass);
                }
            }
        });
         
        // If new account then move to Registration Activity
        newdnewaccount.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(LoginActivity.this, RegistrationActivity.class));
            }
        });
         
        // Recover Your Password using email
        reocverpass.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showRecoverPasswordDialog();
            }
        });
    }
 
    private void showRecoverPasswordDialog() {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Recover Password");
        LinearLayout linearLayout = new LinearLayout(this);
        final EditText emailet = new EditText(this);//write your registered email
        emailet.setText("Email");
        emailet.setMinEms(16);
        emailet.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
        linearLayout.addView(emailet);
        linearLayout.setPadding(10, 10, 10, 10);
        builder.setView(linearLayout);
        builder.setPositiveButton("Recover", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                String emaill = emailet.getText().toString().trim();
                beginRecovery(emaill);//send a mail on the mail to recover password
            }
        });
        builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });
        builder.create().show();
    }
 
    private void beginRecovery(String emaill) {
        loadingBar.setMessage("Sending Email....");
        loadingBar.setCanceledOnTouchOutside(false);
        loadingBar.show();
        
        // send reset password email
        mAuth.sendPasswordResetEmail(emaill).addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                loadingBar.dismiss();
                if (task.isSuccessful()) {
                    Toast.makeText(LoginActivity.this, "Done sent", Toast.LENGTH_LONG).show();
                } else {
                    Toast.makeText(LoginActivity.this, "Error Occured", Toast.LENGTH_LONG).show();
                }
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                loadingBar.dismiss();
                Toast.makeText(LoginActivity.this, "Error Failed", Toast.LENGTH_LONG).show();
            }
        });
    }
 
    private void loginUser(String emaill, String pass) {
        loadingBar.setMessage("Logging In....");
        loadingBar.show();
         
        // sign in with email and password after authenticating
        mAuth.signInWithEmailAndPassword(emaill, pass).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
 
                if (task.isSuccessful()) {
 
                    loadingBar.dismiss();
                    FirebaseUser user = mAuth.getCurrentUser();
 
                    if (task.getResult().getAdditionalUserInfo().isNewUser()) {
                        String email = user.getEmail();
                        String uid = user.getUid();
                        HashMap<Object, String> hashMap = new HashMap<>();
                        hashMap.put("email", email);
                        hashMap.put("uid", uid);
                        hashMap.put("name", "");
                        hashMap.put("onlineStatus", "online");
                        hashMap.put("typingTo", "noOne");
                        hashMap.put("phone", "");
                        hashMap.put("image", "");
                        hashMap.put("cover", "");
                        FirebaseDatabase database = FirebaseDatabase.getInstance();
                         
                        // store the value in Database in "Users" Node
                        DatabaseReference reference = database.getReference("Users");
 
                        // storing the value in Firebase
                        reference.child(uid).setValue(hashMap);
                    }
                    Toast.makeText(LoginActivity.this, "Registered User " + user.getEmail(), Toast.LENGTH_LONG).show();
                    Intent mainIntent = new Intent(LoginActivity.this, DashboardActivity.class);
                    mainIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                    startActivity(mainIntent);
                    finish();
                } else {
                    loadingBar.dismiss();
                    Toast.makeText(LoginActivity.this, "Login Failed", Toast.LENGTH_LONG).show();
                }
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                loadingBar.dismiss();
                Toast.makeText(LoginActivity.this, "Error Occured", Toast.LENGTH_LONG).show();
            }
        });
    }
 
    @Override
    public boolean onSupportNavigateUp() {
        onBackPressed();
        return super.onSupportNavigateUp();
    }
}

 

 



Step 7: Working with the AndroidManifest.xml file

 

Navigate to the AndroidManifest.xml file and add the below permission for getting internet permission in the app.

 

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

 

Also, make the SpalshScreen Acticty as the welcome screen. Refe to the following code 

 

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

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

 

 Below is the complete code for the AndroidManifest.xml file.

 

XML




<?xml version="1.0" encoding="utf-8"?>
    package="com.example.socialmediaapp">
 
    <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/Theme.SocialMediaApp">
        <activity android:name=".DashboardActivity"></activity>
        <activity android:name=".LoginActivity" />
        <activity android:name=".RegistrationActivity" />
        <activity android:name=".SpalshScreen">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
 
</manifest>

 

 

Step 8: Working with the colors.xml file

 

Go to the app > res > values > colors.xml file and use the following color

 

XML




<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#CC2E76BE</color>
    <color name="colorPrimaryDark">#CC073D74</color>
    <color name="colorAccent">#0A527E</color>
    <color name="colorBlack">#000000</color>
    <color name="colorWhite">#fff</color>
    <color name="colorGray">#F5F1F1</color>
    <color name="colorgray01">#959595</color>
    <color name="colorGray02">#f5f0f0</color>
    <color name="colorGreen">#17581A</color>
    <color name="colorRed">#F4511E</color>
    <color name="btnRed">#E61313</color>
    <color name="btnedit">#2CA7E0</color>
    <color name="neutral">#0a1b97</color>
    <color name="colordrawer">#2B2C2E</color>
</resources>

 
 



Output:

 

Registration:

 

 

Login:

 

 

After successfully authenticated the admin can see the users in the firebase console like the following

 

 

For all the drawable file used in this article please refer to this link: https://drive.google.com/drive/folders/1M_knOH_ugCuwSP5nkYzeD4dRp-Honzbe?usp=sharing

 

Below is the file structure after performing these operations:

 

Note: In this part, there is nothing to do with the DashboardActivity.

 

Attention reader! Don’t stop learning now. Get hold of all the important Java Foundation and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.




My Personal Notes arrow_drop_up
Recommended Articles
Page :