Implement Splash Screen and Authentication in Social Media Android App

13 Jun, 2022
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, andLogin
Registration, and
Login
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 SplashScreen, 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 SplashScreen Activity
Navigate to the app > res > layout > activity_splash_screen.xml and add the below code to that file. Below is the code for the activity_splash_screen.xml file. 
XML
<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout    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:background="@drawable/background_color"     tools:context=".SplashScreen"> </androidx.constraintlayout.widget.ConstraintLayout>
Working with the SplashScreen.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(SplashScreen.this, LoginActivity.class);
                    startActivity(intent);
                    finish();
                }
                else {
                    Intent mainIntent= new Intent(SplashScreen.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 SplashScreen.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 SplashScreen extends AppCompatActivity {     FirebaseUser currentUser;    private FirebaseAuth mAuth;     @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_splash_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(SplashScreen.this, LoginActivity.class);                    startActivity(intent);                    finish();                } else {                    Intent mainIntent = new Intent(SplashScreen.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: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=".RegistrationActivity">     <TextView        android:id="@+id/teacher"        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/teacher"        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 Occurred",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 Occurred", 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: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=".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 Occurred",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 Occurred", 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 Occurred", 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 SplashScreen Acticty as the welcome screen. Refer to the following code 
<activity android:name=".SplashScreen">
            <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"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    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=".SplashScreen">            <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>
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.
adnanirshad158
germanshephered48
avtarkumar719
nnr223442
nikhatkhan11
Firebase
Android
Java
Java
Android
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.