step 1:-
MainActivitry.java
Google login firebase data store realtime databse upload data-
package com.sandhya.youtube.activities;
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Color;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.firebase.ui.database.FirebaseRecyclerOptions;
import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.auth.api.signin.GoogleSignInClient;
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
import com.google.android.gms.common.api.ApiException;
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.auth.GoogleAuthProvider;
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.sandhya.youtube.R;
import com.sandhya.youtube.adapter.ContentAdapter;
import com.sandhya.youtube.databinding.ActivityMainBinding;
import com.sandhya.youtube.models.ContentModels;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import de.hdodenhof.circleimageview.CircleImageView;
public class MainActivity extends AppCompatActivity {
ActivityMainBinding binding;
private FirebaseAuth auth;
FirebaseUser user;
GoogleSignInClient googleSignInClient;
GoogleSignInOptions gsc;
private static final int REQ_CODE = 100;
private static final int PERMISSION = 101;
private static final int PICK_GALLERY = 102;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
//permission check
checkPermission();
auth = FirebaseAuth.getInstance();
user = auth.getCurrentUser();
gsc = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestIdToken(getString(R.string
.default_web_client_id)).requestEmail().build();
googleSignInClient = GoogleSignIn.getClient(MainActivity.this, gsc);
//getSupportActionBar().hide();
binding.toolBar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.account:
//Toast.makeText(MainActivity.this, "Account", Toast.LENGTH_SHORT).show();
initAccount();
break;
}
return false;
}
});
}
//Google login 1
public void initAccount() {
if (user != null) {
Toast.makeText(this, "User Already Sign In...", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(this, AccountActivity.class);
startActivity(intent);
} else {
initGoogleLogin();
}
}
//Google login 2
private void initGoogleLogin() {
Intent intent = googleSignInClient.getSignInIntent();
startActivityForResult(intent, REQ_CODE);
}
//Google login 3
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQ_CODE:
if (resultCode == RESULT_OK && data != null) {
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
try {
GoogleSignInAccount account = task.getResult(ApiException.class);
AuthCredential credential = GoogleAuthProvider.getCredential(account.getIdToken(), null);
auth.signInWithCredential(credential).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
//date and time
String date = DateFormat.getDateInstance().format(new Date());
String time = DateFormat.getTimeInstance().format(new Date());
//map data
HashMap<String, Object> map = new HashMap<>();
map.put("username", account.getDisplayName());
map.put("email", account.getEmail());
map.put("profile", String.valueOf(account.getPhotoUrl()));
map.put("uid", firebaseUser.getUid());
map.put("Joining Time", time);
map.put("Joining Date", date);
map.put("search", account.getDisplayName().toLowerCase());
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Users");
reference.child(firebaseUser.getUid()).setValue(map);
Toast.makeText(MainActivity.this, "Login Successfully", Toast.LENGTH_SHORT).show();
startActivity(new Intent(getApplicationContext(), AccountActivity.class));
} else {
Toast.makeText(MainActivity.this, task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
}
});
} catch (Exception e) {
Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
break;
case PICK_GALLERY:
if (resultCode == RESULT_OK && data != null) {
videoUri = data.getData();
Intent intent = new Intent(MainActivity.this, PublishActivity.class);
intent.putExtra("type", "video");
intent.setData(videoUri);
startActivity(intent);
}
}
public void checkPermission() {
if (ActivityCompat.checkSelfPermission(getApplicationContext(),
Manifest.permission.WRITE_EXTERNAL_STORAGE) !=
PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSION);
} else {
Log.d("permission", "checkPermission: Permission granted");
}
}
}
step 2:-
AccountActivity.java
Google login firebase data store realtime databse fetch date-
package com.sandhya.youtube.activities;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
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;
import com.sandhya.youtube.R;
import com.sandhya.youtube.databinding.ActivityAccountBinding;
import com.squareup.picasso.Picasso;
import java.text.DateFormat;
import java.util.Date;
import java.util.HashMap;
public class AccountActivity extends AppCompatActivity {
ActivityAccountBinding binding;
FirebaseAuth auth;
FirebaseUser user;
DatabaseReference reference;
//profile picture and email
String profile, email;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityAccountBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
//Firebase Google Login
initAuthUserRefence();
initUserData();
}
//firebase google login step 1
public void initAuthUserRefence() {
auth = FirebaseAuth.getInstance();
user = auth.getCurrentUser();
reference = FirebaseDatabase.getInstance().getReference();
}
//firebase google login step 2
public void initUserData() {
reference.child("Users").child(user.getUid()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()) {
String username = snapshot.child("username").getValue().toString();
email = snapshot.child("email").getValue().toString();
profile = snapshot.child("profile").getValue().toString();
binding.txtUsername.setText(username);
binding.txtEmail.setText(email);
binding.imgProfile.setImageURI(Uri.parse(profile));
Picasso.get().load(profile).placeholder(R.drawable.ic_account).into(binding.imgProfile);
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Toast.makeText(AccountActivity.this, error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
}
Post a Comment