0% found this document useful (0 votes)
25 views17 pages

Mobile App Development: Digital Assignment 1

The document describes a mobile app development project that uses HTML, CSS, and Firebase. It includes XML layout files and Java code for a login screen with email/password authentication against Firebase Auth. It also includes XML and Java code for a signup screen to create new user accounts in Firebase Auth. The app allows users to sign in, sign up, reset their password, and sign in using phone number authentication with Firebase.

Uploaded by

PRAVIN G
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
25 views17 pages

Mobile App Development: Digital Assignment 1

The document describes a mobile app development project that uses HTML, CSS, and Firebase. It includes XML layout files and Java code for a login screen with email/password authentication against Firebase Auth. It also includes XML and Java code for a signup screen to create new user accounts in Firebase Auth. The app allows users to sign in, sign up, reset their password, and sign in using phone number authentication with Firebase.

Uploaded by

PRAVIN G
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 17

Mobile App Development

Digital Assignment 1

Name: Pravin G
Reg No: 19BIT0393
Slot: A1+TA1
1.HTML

2. CSS
3. Fire Base
Main Activity
Xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<EditText
android:id="@+id/email"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="66dp"
android:ems="10"
android:hint="Email"
android:inputType="textEmailAddress"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<EditText
android:id="@+id/password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="43dp"
android:ems="10"
android:hint="Password"
android:inputType="numberPassword"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/email" />

<Button
android:id="@+id/signIn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="37dp"
android:text="Sign In"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/password" />
<Button
android:id="@+id/signUp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="124dp"
android:text="Sign Up"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/signIn" />

<Button
android:id="@+id/phoneSignIn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="25dp"
android:text="Sign In Using Phone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/signIn" />

<Button
android:id="@+id/forgotPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="Forgot Password ?"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/signUp" />
</androidx.constraintlayout.widget.ConstraintLayout>

java
package com.pravinglkp.app10;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
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;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

public class MainActivity extends AppCompatActivity {

EditText email,password;
Button signIn,signUp,forgotPassword,phoneSignIn;

FirebaseAuth auth = FirebaseAuth.getInstance();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
email=findViewById(R.id.email);
password=findViewById(R.id.password);
signIn=findViewById(R.id.signIn);
signUp=findViewById(R.id.signUp);
forgotPassword=findViewById(R.id.forgotPassword);
phoneSignIn=findViewById(R.id.phoneSignIn);

signIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String userEmail=email.getText().toString();
String userPassword=password.getText().toString();
signIn(userEmail,userPassword);
}
});
signUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this,SignUpActivity.class);
startActivity(i);
}
});

phoneSignIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new
Intent(MainActivity.this,PhoneSignInActivity.class);
startActivity(i);
finish();
}
});

forgotPassword.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new
Intent(MainActivity.this,ForgotPasswordActivity.class);
startActivity(i);
}
});

@Override
protected void onStart() {
super.onStart();
FirebaseUser user=auth.getCurrentUser();
if(user!=null){
Intent i = new Intent(MainActivity.this,MainMenuActivity.class);
startActivity(i);
finish();
}
}

void signIn(String userEmail, String userPassword){


auth.signInWithEmailAndPassword(userEmail, userPassword)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>()
{
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Sign in success, update UI with the signed-in
user's information
Intent i = new
Intent(MainActivity.this,MainMenuActivity.class);
startActivity(i);
finish();
} else {
// If sign in fails, display a message to the user.
Toast.makeText(MainActivity.this,"InCorrect Email or
Password",
Toast.LENGTH_LONG).show();
}
}

});
}
}
Sign Up
Xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SignUpActivity">

<EditText
android:id="@+id/signUpEmail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="128dp"
android:ems="10"
android:hint="Email"
android:inputType="textEmailAddress"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<EditText
android:id="@+id/signUpPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="27dp"
android:ems="10"
android:hint="Password"
android:inputType="numberPassword"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/signUpEmail" />

<Button
android:id="@+id/signUpSignUp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="45dp"
android:text="Sign Up"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/signUpPassword" />
</androidx.constraintlayout.widget.ConstraintLayout>
java
package com.pravinglkp.app10;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
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 SignUpActivity extends AppCompatActivity {

EditText signUpEmail,signUpPassword;
Button signUpSignUp;

FirebaseAuth auth=FirebaseAuth.getInstance();

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

signUpEmail =findViewById(R.id.signUpEmail);
signUpPassword=findViewById(R.id.signUpPassword);
signUpSignUp =findViewById(R.id.signUpSignUp);

signUpSignUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String userEmail=signUpEmail.getText().toString();
String userPassword=signUpPassword.getText().toString();

createUser(userEmail,userPassword);

}
});
}
void createUser(String userEmail,String userPassword){
auth.createUserWithEmailAndPassword(userEmail, userPassword)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>()
{
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Sign in success, update UI with the signed-in
user's information
Toast.makeText(SignUpActivity.this,"Your Account is
Created",Toast.LENGTH_LONG).show();

Intent i = new
Intent(SignUpActivity.this,MainActivity.class);
startActivity(i);
finish();

} else {
// If sign in fails, display a message to the user.
Toast.makeText(SignUpActivity.this,"Something went
wrong",Toast.LENGTH_LONG).show();
}
}
});
}
}

Main Menu
Xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainMenuActivity">

<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="178dp"
android:text="MainMenu"
android:textSize="34sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<Button
android:id="@+id/signOut"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="32dp"
android:layout_marginLeft="32dp"
android:layout_marginTop="38dp"
android:text="Sign Out"
app:layout_constraintStart_toStartOf="@+id/textView"
app:layout_constraintTop_toBottomOf="@+id/textView" />
</androidx.constraintlayout.widget.ConstraintLayout>

java
package com.pravinglkp.app10;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.google.firebase.auth.FirebaseAuth;

public class MainMenuActivity extends AppCompatActivity {

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

signOut= findViewById(R.id.signOut);

signOut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FirebaseAuth.getInstance().signOut();
Intent i = new Intent(MainMenuActivity.this,MainActivity.class);
startActivity(i);
finish();
}
});
}
}
Forgot Password
Xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ForgotPasswordActivity">

<EditText
android:id="@+id/forgotPasswordEmail"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_marginTop="81dp"
android:ems="10"
android:hint="Enter Your Email"
android:inputType="textEmailAddress"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<Button
android:id="@+id/resetPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="47dp"
android:text="Reset Password"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/forgotPasswordEmail" />
</androidx.constraintlayout.widget.ConstraintLayout>

java
package com.pravinglkp.app10;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;

import org.jetbrains.annotations.NotNull;

public class ForgotPasswordActivity extends AppCompatActivity {

EditText email;
Button resetPassword;
FirebaseAuth auth =FirebaseAuth.getInstance();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_forgot_password);
email=findViewById(R.id.forgotPasswordEmail);
resetPassword=findViewById(R.id.resetPassword);

resetPassword.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String userEmail=email.getText().toString();
auth.sendPasswordResetEmail(userEmail)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull @NotNull Task<Void>
task) {
Toast.makeText(ForgotPasswordActivity.this,"Sent
you Reset Link",
Toast.LENGTH_LONG).show();
}
});
}
});
}
}
Phone Number Sign In
XML
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".PhoneSignInActivity">

<EditText
android:id="@+id/phoneNumber"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="73dp"
android:ems="10"
android:hint="Phone Number"
android:inputType="phone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<Button
android:id="@+id/sendOTP"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="47dp"
android:text="Send OTP"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/phoneNumber" />

<EditText
android:id="@+id/otp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="number"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<Button
android:id="@+id/phoneNumberSignIn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="59dp"
android:text="Sign In"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/otp" />
</androidx.constraintlayout.widget.ConstraintLayout>

JAVA
package com.pravinglkp.app10;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
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.FirebaseException;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.PhoneAuthCredential;
import com.google.firebase.auth.PhoneAuthProvider;

import org.jetbrains.annotations.NotNull;

import java.util.concurrent.TimeUnit;

public class PhoneSignInActivity extends AppCompatActivity {

EditText phoneNumber,otp;
Button send,signIn;
String sentCode;

FirebaseAuth auth =FirebaseAuth.getInstance();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_phone_sign_in);
phoneNumber=findViewById(R.id.phoneNumber);
otp=findViewById(R.id.otp);

send=findViewById(R.id.sendOTP);
signIn=findViewById(R.id.phoneNumberSignIn);

send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String userPhonenumber = phoneNumber.getText().toString();
PhoneAuthProvider.getInstance().verifyPhoneNumber(userPhonenumber,
60, TimeUnit.SECONDS,PhoneSignInActivity.this,mCallBack);
}
});

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

signInWIthPhone();
}
});

}
public void signInWIthPhone(){
String userCode=otp.getText().toString();
PhoneAuthCredential
credential=PhoneAuthProvider.getCredential(sentCode,userCode);
signInWithPhoneAuthCredential(credential);
}
public void signInWithPhoneAuthCredential(PhoneAuthCredential credential){
auth.signInWithCredential(credential)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull @NotNull Task<AuthResult>
task) {
if(task.isSuccessful()){
Intent i = new
Intent(PhoneSignInActivity.this,MainMenuActivity.class);
startActivity(i);
finish();
}
else{
Toast.makeText(PhoneSignInActivity.this,"Code Entered
is InCorrect",
Toast.LENGTH_LONG).show();
}
}
});
}
PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallBack
= new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
@Override
public void onVerificationCompleted(@NonNull @NotNull PhoneAuthCredential
phoneAuthCredential) {

@Override
public void onVerificationFailed(@NonNull @NotNull FirebaseException e) {

@Override
public void onCodeSent(@NonNull @NotNull String s, @NonNull @NotNull
PhoneAuthProvider.ForceResendingToken forceResendingToken) {
super.onCodeSent(s, forceResendingToken);
sentCode=s;
}
};
}

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy