online shop with firebase part 3

 Manifest file

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

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

<application
android:allowBackup="true"
android:icon="@drawable/shop"
android:label="@string/app_name"
android:roundIcon="@drawable/shop"
android:supportsRtl="true"
android:theme="@style/AppTheme.NoActionBar">
<activity android:name=".MainUserActivity"></activity>
<activity android:name=".MainSellerActivity" />
<activity android:name=".ForgotPasswordActivity" />
<activity android:name=".RegisterUserActivity" />
<activity android:name=".RegisterSellerActivity" />
<activity android:name=".LoginActivity" />
<activity android:name=".SplashActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.theartofdev.edmodo.cropper.CropImageActivity"
android:theme="@style/Base.Theme.AppCompat" />
</application>

</manifest>
Forgot password activity
package com.para.groceryapplication;

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

import android.app.ProgressDialog;
import android.os.Bundle;
import android.util.Patterns;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Toast;

import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.auth.FirebaseAuth;

public class ForgotPasswordActivity extends AppCompatActivity {

private ImageButton backBtn;
private EditText emailEt;
private Button recoverBtn;

private FirebaseAuth firebaseAuth;
private ProgressDialog progressDialog;

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

backBtn=findViewById(R.id.backBtn);
emailEt=findViewById(R.id.emailEt);
recoverBtn=findViewById(R.id.recoverBtn);

firebaseAuth =FirebaseAuth.getInstance();
progressDialog =new ProgressDialog(this);
progressDialog.setTitle("Please wait");
progressDialog.setCanceledOnTouchOutside(false);



backBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
recoverBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
recoverPassword();
}
});
}
private String email;
private void recoverPassword() {
email = emailEt.getText().toString().trim();
if(!Patterns.EMAIL_ADDRESS.matcher(email).matches()){
Toast.makeText(this,"Invalid Email",Toast.LENGTH_SHORT).show();
return;
}
progressDialog.setMessage("Sending insturction to reset password");
progressDialog.show();

firebaseAuth.sendPasswordResetEmail(email)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
//instruction sent
progressDialog.dismiss();
Toast.makeText(ForgotPasswordActivity.this,"Password reset instructions send to your email...",Toast.LENGTH_SHORT).show();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
//failed sending instructions
progressDialog.dismiss();
Toast.makeText(ForgotPasswordActivity.this,""+e.getMessage(),Toast.LENGTH_SHORT).show();
}
});
}
}
login activity

package com.para.groceryapplication;

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

import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
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 com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
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;

import java.util.HashMap;
import java.util.regex.Pattern;

public class LoginActivity extends AppCompatActivity {
//Ui views
private EditText emailEt,passwordEt;
private TextView forgotTv, noAccountTv;
private Button loginBtn;

private FirebaseAuth firebaseAuth;
private ProgressDialog progressDialog;


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

//init UI views
emailEt=findViewById(R.id.emailEt);
passwordEt=findViewById(R.id.passwordEt);
forgotTv=findViewById(R.id.forgotTv);
noAccountTv=findViewById(R.id.noAccountTv);
loginBtn=findViewById(R.id.loginBtn);

firebaseAuth =FirebaseAuth.getInstance();
progressDialog =new ProgressDialog(this);
progressDialog.setTitle("Please wait");
progressDialog.setCanceledOnTouchOutside(false);

noAccountTv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(LoginActivity.this,RegisterUserActivity.class));
}
});

forgotTv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(LoginActivity.this,ForgotPasswordActivity.class));

}
});

loginBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
loginUser();
}
});
}
private String email,password;
private void loginUser() {
email=emailEt.getText().toString().trim();
password=passwordEt.getText().toString().trim();

if(!Patterns.EMAIL_ADDRESS.matcher(email).matches()){
Toast.makeText(this,"Invalid email pattern...",Toast.LENGTH_SHORT).show();
return;
}
if(TextUtils.isEmpty(password)){
Toast.makeText(this,"Enter password...",Toast.LENGTH_SHORT).show();
return;
}

progressDialog.setMessage("Logging In...");
progressDialog.show();

firebaseAuth.signInWithEmailAndPassword(email,password)
.addOnSuccessListener(new OnSuccessListener<AuthResult>() {
@Override
public void onSuccess(AuthResult authResult) {
//logged in successfully
makeMeOnline();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
//failed logging in
progressDialog.dismiss();
Toast.makeText(LoginActivity.this,""+e.getMessage(),Toast.LENGTH_SHORT).show();
}
});
}

private void makeMeOnline() {
//after logging in, make user online
progressDialog.setMessage("Checking User...");

HashMap<String,Object> hashMap = new HashMap<>();
hashMap.put("online","true");

//update value to db
DatabaseReference ref= FirebaseDatabase.getInstance().getReference("Users");
ref.child(firebaseAuth.getUid()).updateChildren(hashMap)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
//update successfully
checkUserType();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
//failed updating
progressDialog.dismiss();
Toast.makeText(LoginActivity.this,""+e.getMessage(),Toast.LENGTH_SHORT).show();
}
});
}

private void checkUserType() {
//if user is seller,start seller main screen

//if user is buyer, start user main screen

DatabaseReference ref=FirebaseDatabase.getInstance().getReference("Users");
ref.orderByChild("uid").equalTo(firebaseAuth.getUid())
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for(DataSnapshot ds:snapshot.getChildren()){
String accountType =""+ds.child("accountType").getValue();
if(accountType.equals("Seller")){
progressDialog.dismiss();
//user is seller
startActivity(new Intent(LoginActivity.this,MainSellerActivity.class));
finish();
}else {
progressDialog.dismiss();
//user is buyer
startActivity(new Intent(LoginActivity.this,MainUserActivity.class));
finish();
}
}
}

@Override
public void onCancelled(@NonNull DatabaseError error) {

}
});

}
}
//password and passwordet

main seller activity
package com.para.groceryapplication;

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

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;

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 MainSellerActivity extends AppCompatActivity {


private TextView nameTv;
private ImageButton logoutBtn;
private FirebaseAuth firebaseAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_seller);

nameTv=findViewById(R.id.nameTv);
logoutBtn=findViewById(R.id.loginBtn);

firebaseAuth =FirebaseAuth.getInstance();
checkUser();

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

private void checkUser() {
FirebaseUser user= firebaseAuth.getCurrentUser();
if(user==null){
startActivity(new Intent(MainSellerActivity.this,LoginActivity.class));
finish();}else {
loadMyInfo();
}
}

private void loadMyInfo() {
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Users");
ref.orderByChild("uid").equalTo(firebaseAuth.getUid())
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot ds:snapshot.getChildren()){
String name= ""+ds.child("name").getValue();
String accountType= ""+ds.child("accountType").getValue();

nameTv.setText(name+"("+accountType+")");
}
}

@Override
public void onCancelled(@NonNull DatabaseError error) {

}
});
}
}


main user activity
package com.para.groceryapplication;

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

import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;

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 MainUserActivity extends AppCompatActivity {

private TextView nameTv;
private ImageButton logoutBtn;

private FirebaseAuth firebaseAuth;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_user);
nameTv=findViewById(R.id.nameTv);
logoutBtn=findViewById(R.id.loginBtn);

firebaseAuth =FirebaseAuth.getInstance();
checkUser();

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

private void checkUser() {
FirebaseUser user= firebaseAuth.getCurrentUser();
if(user==null){
startActivity(new Intent(MainUserActivity.this,LoginActivity.class));
finish();}else {
loadMyInfo();
}
}

private void loadMyInfo() {
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Users");
ref.orderByChild("uid").equalTo(firebaseAuth.getUid())
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot ds:snapshot.getChildren()){
String name= ""+ds.child("name").getValue();
String accountType= ""+ds.child("accountType").getValue();

nameTv.setText(name+"("+accountType+")");
}
}

@Override
public void onCancelled(@NonNull DatabaseError error) {

}
});
}
}
//43:38

registerseller activity

package com.para.groceryapplication;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

import android.Manifest;
import android.annotation.SuppressLint;
import android.app.ProgressDialog;
import android.app.TaskInfo;
import android.content.ContentValues;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Patterns;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;

import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.regex.Pattern;

public class RegisterSellerActivity extends AppCompatActivity implements LocationListener {


private ImageButton backBtn,gpsBtn;
private ImageView profileIv;
private EditText nameEt,shopNameEt,phoneEt,deliveryFeeEt,countryEt,stateEt,
cityEt,addressEt,emailEt,passwordEt,cPasswordEt;
private Button registerBtn;

//permission constant
private static final int LOCATION_REQUEST_CODE=100;
private static final int CAMERA_REQUEST_CODE=200;
private static final int STORAGE_REQUEST_CODE=300;
//image pick constants
private static final int IMAGE_PICK_GALLERY_CODE=400;
private static final int IMAGE_PICK_CAMERA_CODE=500;

//permission arrays
private String[] locationPermissions;
private String[] cameraPermissions;
private String[] storagePermissions;
private final String timestamp=""+ System.currentTimeMillis();
//image picked uri
private Uri image_url;

private double latitude,longitude;

private LocationManager locationManager;

private FirebaseAuth firebaseAuth;
private ProgressDialog progressDialog;

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


backBtn = findViewById(R.id.backBtn);
gpsBtn = findViewById(R.id.gpsBtn);
profileIv = findViewById(R.id.profileIv);
nameEt = findViewById(R.id.nameEt);
shopNameEt = findViewById(R.id.shopNameEt);
phoneEt = findViewById(R.id.phoneEt);
deliveryFeeEt = findViewById(R.id.deliveryFeeEt);
countryEt=findViewById(R.id.countryEt);
stateEt=findViewById(R.id.stateEt);
cityEt=findViewById(R.id.cityEt);
addressEt=findViewById(R.id.addressEt);
emailEt=findViewById(R.id.emailEt);
passwordEt=findViewById(R.id.passwordEt);
cPasswordEt=findViewById(R.id.cPasswordEt);
registerBtn=findViewById(R.id.registerBtn);

//init permissios array
locationPermissions=new String[]{Manifest.permission.ACCESS_FINE_LOCATION};
cameraPermissions=new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE};
storagePermissions=new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE};


firebaseAuth=FirebaseAuth.getInstance();
progressDialog = new ProgressDialog(this);
progressDialog.setTitle("Please wait");
progressDialog.setCanceledOnTouchOutside(false);

backBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
gpsBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//detect current location
if(checkLocationPermission()){
//already
detectLocation();
}else {
//not allowed, request
requestLocationPermission();
}
}
});
profileIv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//pick image
showImagePickDialog();
}
});
registerBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//register user
inputData();
}
});

}
private String fullName,shopName,phoneNumber,deliveryFee,country,state,city,address,email,password,confirmPassword;
private void inputData() {
//input data
fullName=nameEt.getText().toString().trim();
shopName=shopNameEt.getText().toString().trim();
phoneNumber=phoneEt.getText().toString().trim();
deliveryFee=deliveryFeeEt.getText().toString().trim();
country=countryEt.getText().toString().trim();
state=stateEt.getText().toString().trim();
city=cityEt.getText().toString().trim();
address=addressEt.getText().toString().trim();
email=emailEt.getText().toString().trim();
password=passwordEt.getText().toString().trim();
confirmPassword=cPasswordEt.getText().toString().trim();
//validate data
if(TextUtils.isEmpty(fullName)){
Toast.makeText(this,"Enter Name...",Toast.LENGTH_SHORT).show();
return;
}
if(TextUtils.isEmpty(shopName)){
Toast.makeText(this,"Enter Shop Name...",Toast.LENGTH_SHORT).show();
return;
}
if(TextUtils.isEmpty(phoneNumber)){
Toast.makeText(this,"Enter Phone Number...",Toast.LENGTH_SHORT).show();
return;
}
if(TextUtils.isEmpty(deliveryFee)){
Toast.makeText(this,"Enter Delivery Fee...",Toast.LENGTH_SHORT).show();
return;
}
if(latitude==0.0||longitude==0.0){
Toast.makeText(this,"Please click GPS button to detect location...",Toast.LENGTH_SHORT).show();
return;
}
if(!Patterns.EMAIL_ADDRESS.matcher(email).matches()){
Toast.makeText(this,"Invalid email pattern...",Toast.LENGTH_SHORT).show();
return;
}
if(password.length()<6){
Toast.makeText(this,"Password must be atlest 6 characters long..",Toast.LENGTH_SHORT).show();
return;
}
if(!password.equals(confirmPassword)){
Toast.makeText(this,"Password doesn't match..",Toast.LENGTH_SHORT).show();
return;
}
createAccount();
}

private void createAccount() {
progressDialog.setMessage("Creating Account...");
progressDialog.show();

//create account
firebaseAuth.createUserWithEmailAndPassword(email,password)
.addOnSuccessListener(new OnSuccessListener<AuthResult>() {
@Override
public void onSuccess(AuthResult authResult) {
//account created
saverFirebaseData();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
//failed creating account
progressDialog.dismiss();
Toast.makeText(RegisterSellerActivity.this,""+e.getMessage(),Toast.LENGTH_SHORT).show();
}
});
}

private void saverFirebaseData() {
progressDialog.setMessage("Saving Account Info...");

String timetamp =""+System.currentTimeMillis();

if(image_url==null){
//saving info without image

//setup data to save
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("uid",""+firebaseAuth.getUid());
hashMap.put("email",""+email);
hashMap.put("name",""+fullName);
hashMap.put("shopName",""+shopName);
hashMap.put("phone",""+phoneEt);
hashMap.put("deliveryFee",""+deliveryFee);
hashMap.put("country",""+country);
hashMap.put("state",""+state);
hashMap.put("city",""+city);
hashMap.put("address",""+address);
hashMap.put("latitude",""+latitude);
hashMap.put("longitude",""+longitude);
hashMap.put("timestamp",""+timestamp);
hashMap.put("accountType","Seller");
hashMap.put("online","true");
hashMap.put("shopOpen","true");
hashMap.put("profileImage","true");

//save to db
DatabaseReference ref= FirebaseDatabase.getInstance().getReference("Users");
ref.child(firebaseAuth.getUid()).setValue(hashMap)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
//db updated
progressDialog.dismiss();
startActivity(new Intent(RegisterSellerActivity.this,MainSellerActivity.class));
finish();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
//failed updating db
progressDialog.dismiss();
startActivity(new Intent(RegisterSellerActivity.this,MainSellerActivity.class));
finish();
}
});
}else {
//saving info with image


//image and path of image
String filePathAndName ="profile_images/"+""+firebaseAuth.getUid();
//upload image
StorageReference storageReference = FirebaseStorage.getInstance().getReference(filePathAndName);
storageReference.putFile(image_url)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
//get url of uploaded image
Task<Uri> uriTask=taskSnapshot.getStorage().getDownloadUrl();
while (!uriTask.isSuccessful());
Uri downloadImageUri = uriTask.getResult();


if(uriTask.isSuccessful()){
//setup data to save
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("uid",""+firebaseAuth.getUid());
hashMap.put("email",""+email);
hashMap.put("name",""+fullName);
hashMap.put("shopName",""+shopName);
hashMap.put("phone",""+phoneEt);
hashMap.put("deliveryFee",""+deliveryFee);
hashMap.put("country",""+country);
hashMap.put("state",""+state);
hashMap.put("city",""+city);
hashMap.put("address",""+address);
hashMap.put("latitude",""+latitude);
hashMap.put("longitude",""+longitude);
hashMap.put("timestamp",""+timestamp);
hashMap.put("accountType","Seller");
hashMap.put("online","true");
hashMap.put("shopOpen","true");
hashMap.put("profileImage",""+downloadImageUri);//url of uploaded image

//save to db
DatabaseReference ref= FirebaseDatabase.getInstance().getReference("Users");
ref.child(firebaseAuth.getUid()).setValue(hashMap)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
//db updated
progressDialog.dismiss();
startActivity(new Intent(RegisterSellerActivity.this,MainSellerActivity.class));
finish();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
//failed updating db
progressDialog.dismiss();
startActivity(new Intent(RegisterSellerActivity.this,MainSellerActivity.class));
finish();
}
});
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
progressDialog.dismiss();
Toast.makeText(RegisterSellerActivity.this,""+e.getMessage(),Toast.LENGTH_SHORT).show();
}
});
}

}

private void showImagePickDialog() {
//option to display in dialog
String[] options = {"Camera","Gallery"};
//dialog
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Pick Image")
.setItems(options, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//handle clicks
if(which==0){
//camera clicked
if(checkCameraPermission()){
//camera permission allowed
pickFromCamera();
}else{
//camera allowed, request
requestCameraPermission();
}

}else{
//gallery clicked
if(checkStoragePermission()){
//storage permission allowed
pickFromCamera();
}else{
//not allowed,
requestStoragePermission();
}


}
}
})
.show();


}

private void pickFromGallery(){
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(intent,IMAGE_PICK_GALLERY_CODE);

}

private void pickFromCamera(){
ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.Images.Media.TITLE,"Temp_Image Title");
contentValues.put(MediaStore.Images.Media.DESCRIPTION,"Temp_Image Description");

image_url =getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,contentValues);

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, image_url);
startActivityForResult(intent, IMAGE_PICK_CAMERA_CODE);
}

private void detectLocation() {
Toast.makeText(this,"Please wait...",Toast.LENGTH_LONG).show();

locationManager =(LocationManager)getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,this);
}

private void findAddress() {
//find address, country, state, city
Geocoder geocoder;
List<Address> addresses;
geocoder = new Geocoder(this, Locale.getDefault());


try {
addresses = geocoder.getFromLocation(latitude,longitude,1);

String address=addresses.get(0).getAddressLine(0);//complete address
String city=addresses.get(0).getLocality();
String state=addresses.get(0).getAdminArea();
String country=addresses.get(0).getCountryName();

//set addresses
countryEt.setText(country);
stateEt.setText(state);
cityEt.setText(city);
addressEt.setText(address);

}catch (Exception e){
Toast.makeText(this,""+e.getMessage(),Toast.LENGTH_SHORT).show();
}

}

private boolean checkLocationPermission(){

boolean result = ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION)==
(PackageManager.PERMISSION_GRANTED);

return result;
}

private void requestLocationPermission(){
ActivityCompat.requestPermissions(this,locationPermissions,LOCATION_REQUEST_CODE);
}

private boolean checkStoragePermission(){
boolean result = ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)==
(PackageManager.PERMISSION_GRANTED);
return result;
}

private void requestStoragePermission(){
ActivityCompat.requestPermissions(this,storagePermissions,STORAGE_REQUEST_CODE);

}

private boolean checkCameraPermission(){
boolean result = ContextCompat.checkSelfPermission(this,
Manifest.permission.CAMERA)==
(PackageManager.PERMISSION_GRANTED);
boolean result1 = ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)==
(PackageManager.PERMISSION_GRANTED);
return result && result1;
}

private void requestCameraPermission(){
ActivityCompat.requestPermissions(this,cameraPermissions,CAMERA_REQUEST_CODE);

}


@Override
public void onLocationChanged(Location location) {
//location detected
latitude = location.getLatitude();
longitude =location.getLongitude();

findAddress();
}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {

}

@Override
public void onProviderEnabled(String provider) {

}

@Override
public void onProviderDisabled(String provider) {
//gps/location disabled
Toast.makeText(this,"Please turn on location...",Toast.LENGTH_SHORT).show();
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case LOCATION_REQUEST_CODE: {
if (grantResults.length > 0) {
boolean locationAccepted = grantResults[0] == PackageManager.PERMISSION_GRANTED;
if (locationAccepted) {
//permisssion allowed
detectLocation();
} else {
//permission denied
Toast.makeText(this,"Location permission is necessary...",Toast.LENGTH_SHORT).show();
}

}
}
break;
case CAMERA_REQUEST_CODE: {
if (grantResults.length > 0) {
boolean cameraAccepted = grantResults[0] == PackageManager.PERMISSION_GRANTED;
boolean storageAccepted = grantResults[1] == PackageManager.PERMISSION_GRANTED;
if (cameraAccepted && storageAccepted) {
//permisssion allowed
pickFromCamera();
} else {
//permission denied
Toast.makeText(this,"Camera permission are necessary...",Toast.LENGTH_SHORT).show();
}

}
}
break;
case STORAGE_REQUEST_CODE: {
if (grantResults.length > 0) {

boolean storageAccepted = grantResults[1] == PackageManager.PERMISSION_GRANTED;
if (storageAccepted) {
//permisssion allowed
pickFromGallery();
} else {
//permission denied
Toast.makeText(this,"Storage permission is necessary...",Toast.LENGTH_SHORT).show();
}

}
}
break;
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);

}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if(resultCode==RESULT_OK){

if(requestCode== IMAGE_PICK_GALLERY_CODE){

//get picked image
image_url=data.getData();
//set to imageview
profileIv.setImageURI(image_url);
}
else if(requestCode== IMAGE_PICK_CAMERA_CODE){


//set to imageview
profileIv.setImageURI(image_url);
}
}
super.onActivityResult(requestCode, resultCode, data);
}
}

//9:04

registeruser activity

package com.para.groceryapplication;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

import android.Manifest;
import android.app.ProgressDialog;
import android.content.ContentValues;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.text.TextUtils;
import android.util.Patterns;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;

import java.util.HashMap;
import java.util.List;
import java.util.Locale;

public class RegisterUserActivity extends AppCompatActivity implements LocationListener {

private ImageButton backBtn,gpsBtn;
private ImageView profileIv;
private EditText nameEt,phoneEt,countryEt,stateEt,cityEt,addressEt,emailEt
,passwordEt,cPasswordEt;
private Button registerBtn;
private TextView registerSellerTv;

//permission constant
private static final int LOCATION_REQUEST_CODE=100;
private static final int CAMERA_REQUEST_CODE=200;
private static final int STORAGE_REQUEST_CODE=300;
//image pick constants
private static final int IMAGE_PICK_GALLERY_CODE=400;
private static final int IMAGE_PICK_CAMERA_CODE=500;

//permission arrays
private String[] locationPermissions;
private String[] cameraPermissions;
private String[] storagePermissions;

//image picked uri
private Uri image_url;

private double latitude,longitude;

private LocationManager locationManager;

private FirebaseAuth firebaseAuth;
private ProgressDialog progressDialog;
private String timestamp=""+ System.currentTimeMillis();

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

//init ui views
backBtn=findViewById(R.id.backBtn);
gpsBtn=findViewById(R.id.gpsBtn);
profileIv=findViewById(R.id.profileIv);
nameEt=findViewById(R.id.nameEt);
phoneEt=findViewById(R.id.phoneEt);
countryEt=findViewById(R.id.countryEt);
stateEt=findViewById(R.id.stateEt);
cityEt=findViewById(R.id.cityEt);
addressEt=findViewById(R.id.addressEt);
emailEt=findViewById(R.id.emailEt);
passwordEt=findViewById(R.id.passwordEt);
cPasswordEt=findViewById(R.id.cPasswordEt);
registerBtn=findViewById(R.id.registerBtn);
registerSellerTv=findViewById(R.id.registerSellerTv);


//init permissios array
locationPermissions=new String[]{Manifest.permission.ACCESS_FINE_LOCATION};
cameraPermissions=new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE};
storagePermissions=new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE};

firebaseAuth=FirebaseAuth.getInstance();
progressDialog= new ProgressDialog(this);
progressDialog.setTitle("please wait");
progressDialog.setCanceledOnTouchOutside(false);

backBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
gpsBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//detect current location

if(checkLocationPermission()){
//already
detectLocation();
}else {
//not allowed, request
requestLocationPermission();
}
}
});
profileIv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//pick image
showImagePickDialog();
}
});
registerBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//register user
inputData();
}
});
registerSellerTv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//open register seller activity
startActivity(new Intent(RegisterUserActivity.this,RegisterSellerActivity.class));
}
});


}
private String fullName,phoneNumber,country,state,city,address,email,password,confirmPassword;
private void inputData() {
//input data
fullName=nameEt.getText().toString().trim();
phoneNumber=phoneEt.getText().toString().trim();
country=countryEt.getText().toString().trim();
state=stateEt.getText().toString().trim();
city=cityEt.getText().toString().trim();
address=addressEt.getText().toString().trim();
email=emailEt.getText().toString().trim();
password=passwordEt.getText().toString().trim();
confirmPassword=cPasswordEt.getText().toString().trim();
//validate data
if(TextUtils.isEmpty(fullName)){
Toast.makeText(this,"Enter Name...",Toast.LENGTH_SHORT).show();
return;
}

if(TextUtils.isEmpty(phoneNumber)){
Toast.makeText(this,"Enter Phone Number...",Toast.LENGTH_SHORT).show();
return;
}

if(latitude==0.0||longitude==0.0){
Toast.makeText(this,"Please click GPS button to detect location...",Toast.LENGTH_SHORT).show();
return;
}
if(!Patterns.EMAIL_ADDRESS.matcher(email).matches()){
Toast.makeText(this,"Invalid email pattern...",Toast.LENGTH_SHORT).show();
return;
}
if(password.length()<6){
Toast.makeText(this,"Password must be atlest 6 characters long..",Toast.LENGTH_SHORT).show();
return;
}
if(!password.equals(confirmPassword)){
Toast.makeText(this,"Password doesn't match..",Toast.LENGTH_SHORT).show();
return;
}
createAccount();
}

private void createAccount() {
progressDialog.setMessage("Creating Account...");
progressDialog.show();

//create account
firebaseAuth.createUserWithEmailAndPassword(email,password)
.addOnSuccessListener(new OnSuccessListener<AuthResult>() {
@Override
public void onSuccess(AuthResult authResult) {
//account created
saverFirebaseData();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
//failed creating account
progressDialog.dismiss();
Toast.makeText(RegisterUserActivity.this,""+e.getMessage(),Toast.LENGTH_SHORT).show();
}
});
}

private void saverFirebaseData() {
progressDialog.setMessage("Saving Account Info...");

String timetamp =""+System.currentTimeMillis();

if(image_url==null){
//saving info without image

//setup data to save
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("uid",""+firebaseAuth.getUid());
hashMap.put("email",""+email);
hashMap.put("name",""+fullName);
hashMap.put("phone",""+phoneNumber);
hashMap.put("country",""+country);
hashMap.put("state",""+state);
hashMap.put("city",""+city);
hashMap.put("address",""+address);
hashMap.put("latitude",""+latitude);
hashMap.put("longitude",""+longitude);
hashMap.put("timestamp",""+timestamp);
hashMap.put("accountType","User");
hashMap.put("online","true");
hashMap.put("profileImage","true");

//save to db
DatabaseReference ref= FirebaseDatabase.getInstance().getReference("Users");
ref.child(firebaseAuth.getUid()).setValue(hashMap)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
//db updated
progressDialog.dismiss();
startActivity(new Intent(RegisterUserActivity.this,MainUserActivity.class));
finish();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
//failed updating db
progressDialog.dismiss();
startActivity(new Intent(RegisterUserActivity.this,MainUserActivity.class));
finish();
}
});
}else {
//saving info with image


//image and path of image
String filePathAndName ="profile_images/"+""+firebaseAuth.getUid();
//upload image
StorageReference storageReference = FirebaseStorage.getInstance().getReference(filePathAndName);
storageReference.putFile(image_url)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
//get url of uploaded image
Task<Uri> uriTask=taskSnapshot.getStorage().getDownloadUrl();
while (!uriTask.isSuccessful());
Uri downloadImageUri = uriTask.getResult();


if(uriTask.isSuccessful()){
//setup data to save
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("uid",""+firebaseAuth.getUid());
hashMap.put("email",""+email);
hashMap.put("name",""+fullName);
hashMap.put("phone",""+phoneNumber);
hashMap.put("country",""+country);
hashMap.put("state",""+state);
hashMap.put("city",""+city);
hashMap.put("address",""+address);
hashMap.put("latitude",""+latitude);
hashMap.put("longitude",""+longitude);
hashMap.put("timestamp",""+timestamp);
hashMap.put("accountType","User");
hashMap.put("online","true");
hashMap.put("profileImage",""+downloadImageUri);//url of uploaded image

//save to db
DatabaseReference ref= FirebaseDatabase.getInstance().getReference("Users");
ref.child(firebaseAuth.getUid()).setValue(hashMap)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
//db updated
progressDialog.dismiss();
startActivity(new Intent(RegisterUserActivity.this,MainUserActivity.class));
finish();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
//failed updating db
progressDialog.dismiss();
startActivity(new Intent(RegisterUserActivity.this,MainUserActivity.class));
finish();
}
});
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
progressDialog.dismiss();
Toast.makeText(RegisterUserActivity.this,""+e.getMessage(),Toast.LENGTH_SHORT).show();
}
});
}

}

private void showImagePickDialog() {
//option to display in dialog
String[] options = {"Camera","Gallery"};
//dialog
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Pick Image")
.setItems(options, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//handle clicks
if(which==0){
//camera clicked
if(checkCameraPermission()){
//camera permission allowed
pickFromCamera();
}else{
//camera allowed, request
requestCameraPermission();
}

}else{
//gallery clicked
if(checkStoragePermission()){
//storage permission allowed
pickFromCamera();
}else{
//not allowed,
requestStoragePermission();
}


}
}
})
.show();


}

private void pickFromGallery(){
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(intent,IMAGE_PICK_GALLERY_CODE);

}

private void pickFromCamera(){
ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.Images.Media.TITLE,"Temp_Image Title");
contentValues.put(MediaStore.Images.Media.DESCRIPTION,"Temp_Image Description");

image_url =getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,contentValues);

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, image_url);
startActivityForResult(intent, IMAGE_PICK_CAMERA_CODE);
}

private void detectLocation() {
Toast.makeText(this,"Please wait...",Toast.LENGTH_LONG).show();

locationManager =(LocationManager)getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,this);
}

private void findAddress() {
//find address, country, state, city
Geocoder geocoder;
List<Address> addresses;
geocoder = new Geocoder(this, Locale.getDefault());


try {
addresses = geocoder.getFromLocation(latitude,longitude,1);

String address=addresses.get(0).getAddressLine(0);//complete address
String city=addresses.get(0).getLocality();
String state=addresses.get(0).getAdminArea();
String country=addresses.get(0).getCountryName();

//set addresses
countryEt.setText(country);
stateEt.setText(state);
cityEt.setText(city);
addressEt.setText(address);

}catch (Exception e){
Toast.makeText(this,""+e.getMessage(),Toast.LENGTH_SHORT).show();
}

}

private boolean checkLocationPermission(){

boolean result = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)==
(PackageManager.PERMISSION_GRANTED);

return result;
}

private void requestLocationPermission(){
ActivityCompat.requestPermissions(this,locationPermissions,LOCATION_REQUEST_CODE);
}

private boolean checkStoragePermission(){
boolean result = ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)==
(PackageManager.PERMISSION_GRANTED);
return result;
}

private void requestStoragePermission(){
ActivityCompat.requestPermissions(this,storagePermissions,STORAGE_REQUEST_CODE);

}

private boolean checkCameraPermission(){
boolean result = ContextCompat.checkSelfPermission(this,
Manifest.permission.CAMERA)==
(PackageManager.PERMISSION_GRANTED);
boolean result1 = ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)==
(PackageManager.PERMISSION_GRANTED);
return result && result1;
}

private void requestCameraPermission(){
ActivityCompat.requestPermissions(this,cameraPermissions,CAMERA_REQUEST_CODE);

}


@Override
public void onLocationChanged(Location location) {
//location detected
latitude = location.getLatitude();
longitude =location.getLongitude();

findAddress();
}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {

}

@Override
public void onProviderEnabled(String provider) {

}

@Override
public void onProviderDisabled(String provider) {
//gps/location disabled
Toast.makeText(this,"Please turn on location...",Toast.LENGTH_SHORT).show();
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case LOCATION_REQUEST_CODE: {
if (grantResults.length > 0) {
boolean locationAccepted = grantResults[0] == PackageManager.PERMISSION_GRANTED;
if (locationAccepted) {
//permisssion allowed
detectLocation();
} else {
//permission denied
Toast.makeText(this,"Location permission is necessary...",Toast.LENGTH_SHORT).show();
}

}
}
break;
case CAMERA_REQUEST_CODE: {
if (grantResults.length > 0) {
boolean cameraAccepted = grantResults[0] == PackageManager.PERMISSION_GRANTED;
boolean storageAccepted = grantResults[1] == PackageManager.PERMISSION_GRANTED;
if (cameraAccepted && storageAccepted) {
//permisssion allowed
pickFromCamera();
} else {
//permission denied
Toast.makeText(this,"Camera permission are necessary...",Toast.LENGTH_SHORT).show();
}

}
}
break;
case STORAGE_REQUEST_CODE: {
if (grantResults.length > 0) {

boolean storageAccepted = grantResults[1] == PackageManager.PERMISSION_GRANTED;
if (storageAccepted) {
//permisssion allowed
pickFromGallery();
} else {
//permission denied
Toast.makeText(this,"Storage permission is necessary...",Toast.LENGTH_SHORT).show();
}

}
}
break;
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);

}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if(resultCode==RESULT_OK){

if(requestCode== IMAGE_PICK_GALLERY_CODE){

//get picked image
image_url=data.getData();
//set to imageview
profileIv.setImageURI(image_url);
}
else if(requestCode== IMAGE_PICK_CAMERA_CODE){


//set to imageview
profileIv.setImageURI(image_url);
}
}
super.onActivityResult(requestCode, resultCode, data);
}



}
//2515

splash activity

package com.para.groceryapplication;

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

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.Window;
import android.view.WindowManager;

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 SplashActivity extends AppCompatActivity {

private FirebaseAuth firebaseAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//make fullscreen
getWindow().requestFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_splash);

firebaseAuth=FirebaseAuth.getInstance();

//start login activity after 2 sec
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
FirebaseUser user=firebaseAuth.getCurrentUser();
if(user==null){
//user not logged in start login activity
startActivity(new Intent(SplashActivity.this,LoginActivity.class));
finish();
}else{
//user is logged in check user type
checkUserType();
}

}
},2000);
}

private void checkUserType() {
//if user is seller,start seller main screen

//if user is buyer, start user main screen

DatabaseReference ref= FirebaseDatabase.getInstance().getReference("Users");
ref.orderByChild("uid").equalTo(firebaseAuth.getUid())
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for(DataSnapshot ds:snapshot.getChildren()){
String accountType =""+ds.child("accountType").getValue();
if(accountType.equals("Seller")){
//user is seller
startActivity(new Intent(SplashActivity.this,MainSellerActivity.class));
finish();
}else {
//user is buyer
startActivity(new Intent(SplashActivity.this,MainUserActivity.class));
finish();
}
}
}

@Override
public void onCancelled(@NonNull DatabaseError error) {

}
});

}
}
//3228
xml files
activity_forgot_password.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
android:background="@color/colorWhite"
tools:context=".ForgotPasswordActivity">

<!--Toolbar-->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:padding="10dp"
android:background="@drawable/shape_rect01">

<ImageButton
android:id="@+id/backBtn"
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@drawable/ic_back_white"
android:background="@null"/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="Recover Password"
android:textStyle="bold"
android:textSize="20sp"
android:textColor="@color/colorWhite"/>

</RelativeLayout>

<ImageView
android:id="@+id/iconIv"
android:layout_width="40dp"
android:layout_height="40dp"
android:background="@drawable/shape_circle01"
android:layout_marginTop="60dp"
android:src="@drawable/ic_key_white"
android:padding="5dp"
android:layout_marginBottom="40dp"
android:layout_centerHorizontal="true"/>

<EditText
android:id="@+id/emailEt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/iconIv"
android:layout_margin="5dp"
android:layout_marginTop="45dp"
android:drawableStart="@drawable/ic_mail_gray"
android:drawablePadding="5dp"
android:hint="Email"
android:inputType="textEmailAddress"
android:padding="10dp"
tools:ignore="RtlCompat" />



<Button
android:id="@+id/recoverBtn"
android:text="Recover"
android:textColor="#ffffff"
android:background="#6200EE"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/emailEt"/>




</RelativeLayout>
activity_login.xml











Comments

Popular posts from this blog

Parallel Universe Friend privacy policy

Privacy Policy for GandG: Geology and Geophysics

Falling Star privacy policy