Here I am using imagecropper dependency to crop and upload it to Firebase.
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == IMAGE_PICK_GALLERY_CODE) {
Uri image_uri = data.getData();
CropImage.activity(data.getData())
.setGuidelines(CropImageView.Guidelines.ON)
.start(getActivity());
//Updateprofilephoto(image_uri);
} else if (requestCode == IMAGE_PICK_CAMERA_CODE) {
//profileIv.setImageURI(image_uri);
CropImage.activity(data.getData())
.setGuidelines(CropImageView.Guidelines.ON)
.start(getActivity());
//uploadProfilePhoto(resulturi);
}
if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
CropImage.ActivityResult result = CropImage.getActivityResult(data);
if (resultCode == RESULT_OK) {
Uri resultUri = result.getUri();
Updateprofilephoto(resultUri);
}
}
super.onActivityResult(requestCode, resultCode, data);
}
}
My code works until this. I can crop the image by choosing an image from my gallery. But by using the following method I cannot upload my cropped image to the Firebase. The original image is uploaded to the Firebase. Not the cropped one. How can I solve that issue?
The code follows:
private void Updateprofilephoto(Uri resulturi) {
progressDialog.setMessage("Updating Account Info...");
progressDialog.setProgressStyle(progressDialog.STYLE_SPINNER);
progressDialog.show();
String filePathAndName = "profile_image/" + "" + firebaseAuth.getUid();
StorageReference storageReference = FirebaseStorage.getInstance().getReference(filePathAndName);
storageReference.putFile(resulturi)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Task<Uri> uriTask = taskSnapshot.getStorage().getDownloadUrl();
while (!uriTask.isSuccessful()) ;
Uri downloadImageUri = uriTask.getResult();
if (uriTask.isSuccessful()) {
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("profileImage", "" + downloadImageUri);
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Users");
ref.child(firebaseAuth.getUid()).updateChildren(hashMap)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
progressDialog.dismiss();
Toast.makeText(getActivity(), "Profile Picture is updated...", Toast.LENGTH_SHORT).show();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
progressDialog.dismiss();
Toast.makeText(getActivity(), "" + e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
progressDialog.dismiss();
Toast.makeText(getActivity(), "" + e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}