Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.rahul.mychatapp;
- import android.app.ProgressDialog;
- import android.content.Intent;
- import android.net.Uri;
- import android.support.annotation.NonNull;
- import android.support.v7.app.AppCompatActivity;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- 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.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.google.firebase.storage.FirebaseStorage;
- import com.google.firebase.storage.StorageReference;
- import com.google.firebase.storage.UploadTask;
- import com.squareup.picasso.Picasso;
- import com.theartofdev.edmodo.cropper.CropImage;
- import java.util.Random;
- import de.hdodenhof.circleimageview.CircleImageView;
- public class AccountSettingsActivity extends AppCompatActivity {
- private TextView displayName;
- private TextView userStatus;
- private CircleImageView mImage;
- private Button changeStatusButton;
- private Button changeImageButton;
- //integer variable for galary intent
- private static final int GALLARY_PICK = 1;
- //firebase database reference
- private DatabaseReference accountDb;
- //firebase user
- private FirebaseUser user;
- //firebase storage reference
- private StorageReference imageReference;
- //for progress dialog
- private ProgressDialog dialog;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_account_settings);
- //java object for xml components
- displayName = (TextView) findViewById(R.id.displayName_setting);
- userStatus = (TextView) findViewById(R.id.status_setting);
- mImage = (CircleImageView) findViewById(R.id.settings_image);
- //firebase storage reference
- imageReference = FirebaseStorage.getInstance().getReference();
- //firebase user
- user = FirebaseAuth.getInstance().getCurrentUser();
- //retrieving userid
- String uid = user.getUid();
- //firebase database reference
- accountDb = FirebaseDatabase.getInstance().getReference().child("Users").child(uid);
- //get data from the firebase database
- accountDb.addValueEventListener(new ValueEventListener() {
- @Override
- public void onDataChange(DataSnapshot dataSnapshot) {
- //getting values form database and storing it in local variables
- String name = dataSnapshot.child("name").getValue().toString();
- String image = dataSnapshot.child("image").getValue().toString();
- String status = dataSnapshot.child("status").getValue().toString();
- String thumbnail = dataSnapshot.child("thumbnail").getValue().toString();
- //setting the retrieved values from database into xml components
- displayName.setText(name);
- userStatus.setText(status);
- //showing the image in circle image view with the help of picasso library
- Picasso.with(AccountSettingsActivity.this).load(image).into(mImage);
- }
- @Override
- public void onCancelled(DatabaseError databaseError) {
- }
- });
- //java object for xml button
- changeStatusButton = (Button) findViewById(R.id.changeStatusButton);
- //on button click
- changeStatusButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- //getting the status from status field to send it to status activity
- String statusToPass = userStatus.getText().toString();
- //making intent to status activity
- Intent intent = new Intent(AccountSettingsActivity.this, StatusActivity.class);
- intent.putExtra("statusValue", statusToPass); //sending data from current intent to different intent
- startActivity(intent);
- }
- });
- //java object for changeImageButton xml button
- changeImageButton = (Button) findViewById(R.id.changeImageButton);
- //on change image button click
- changeImageButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- //making a galary intent
- Intent galleryIntent = new Intent();
- galleryIntent.setType("image/*");
- galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
- startActivityForResult(Intent.createChooser(galleryIntent, "SELECT IMAGE"), GALLARY_PICK);
- }
- });
- }
- //this method works while setting image
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- if (requestCode == GALLARY_PICK && resultCode == RESULT_OK) {
- Uri imageUri = data.getData();
- CropImage.activity(imageUri).setAspectRatio(1,1).start(this);
- }
- if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
- CropImage.ActivityResult result = CropImage.getActivityResult(data);
- if (resultCode == RESULT_OK) {
- //dialog bar
- dialog = new ProgressDialog(AccountSettingsActivity.this);
- dialog.setTitle("Uploading");
- dialog.setMessage("Please Wait");
- dialog.setCanceledOnTouchOutside(false);
- dialog.show();
- Uri resultUri = result.getUri();
- //getting the userId of user so that we can store image name with UID
- String uid = user.getUid();
- //storage reference to store the profile pictures of user
- StorageReference reference = imageReference.child("profile_images").child(uid + ".jpg");
- reference.putFile(resultUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
- @Override
- public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
- if (task.isSuccessful()) {
- //if the image is successfully uploaded store it in database
- String imageUrl = String.valueOf(task.getResult().getDownloadUrl());
- accountDb.child("image").setValue(imageUrl).addOnCompleteListener(new OnCompleteListener<Void>() {
- @Override
- public void onComplete(@NonNull Task<Void> task) {
- if (task.isSuccessful()) {
- dialog.dismiss();
- Toast.makeText(AccountSettingsActivity.this,"Picture Updated Successfully", Toast.LENGTH_LONG).show();
- }else{
- dialog.dismiss();
- Toast.makeText(AccountSettingsActivity.this, task.getException().getLocalizedMessage(), Toast.LENGTH_LONG);
- }
- }
- });
- }else{
- Toast.makeText(AccountSettingsActivity.this, task.getException().getLocalizedMessage(), Toast.LENGTH_LONG).show();
- dialog.dismiss();
- }
- }
- });
- } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
- Exception error = result.getError();
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment