0

This returns me for every image I send in the chat com.google.android.gms.tasks.zzu@d55ef5

Following is my code:

@Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == 1 && resultCode == RESULT_OK){
            Uri uriImagen = data.getData();
            storageReference = storage.getReference("chat_images");//El nombre de la carpeta en la que voy a guardar las imagenes
            final StorageReference photoReference = storageReference.child(uriImagen.getLastPathSegment()); //Obtenemos como un id de la imagen que la diferencia de todas las demás
            photoReference.putFile(uriImagen).addOnSuccessListener(this, new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                    String urlPhoto = taskSnapshot.getMetadata().getReference().getDownloadUrl().toString();

                    Log.v("Url de la foto", urlPhoto);

                    Message m = new Message(tvName.getText().toString() + " te ha enviado una foto", urlPhoto, tvName.getText().toString(), "", "2", "00:00");
                    databaseReference.push().setValue(m);
                }
            });
        }
    }

need help..thanks in advance

Frank van Puffelen
  • 565,676
  • 79
  • 828
  • 807
JuFMM
  • 11
  • 1

2 Answers2

0

You can use Task<Uri> instead, try this out. By the way this getMetadata().getReference().getDownloadUrl() is deprecated, I recommend you to read this Upload-files firebase

photoReference.putFile(uriImagen).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
            Task<Uri> downloadUri = taskSnapshot.getStorage().getDownloadUrl();

           if(downloadUri.isSuccessful()){
            String urlPhoto = downloadUri.getResult().toString();
            Log.v("Url de la foto", urlPhoto);
            Message m = new Message(tvName.getText().toString() + " te ha enviado una foto", urlPhoto, tvName.getText().toString(), "", "2", "00:00");
                    databaseReference.push().setValue(m);
        }}
    })
    .addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            //Do whatever you want                     
        }
    });
Skizo-ozᴉʞS ツ
  • 19,464
  • 18
  • 81
  • 148
0

Try this code :

public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

            Task<Uri> downloadUrl = taskSnapshot.getStorage().getDownloadUrl();
            downloadUrl.addOnCompleteListener(new OnCompleteListener<Uri>() {
                @Override
                public void onComplete(@NonNull Task<Uri> task) {
                    Log.v(TAG, "Media is uploaded");

                    String downloadURL = "https://" + task.getResult().getEncodedAuthority()
                            + task.getResult().getEncodedPath()
                            + "?alt=media&token="
                            + task.getResult().getQueryParameters("token").get(0);

                    Log.v(TAG, "downloadURL: " + downloadURL);
                    //save your downloadURL
                }
            });
        }
NehaK
  • 2,639
  • 1
  • 15
  • 31