0

i don't know why, but everything iam trying doesn't work. I really need my Storgae DownloadUrl form my Files but i always get something back like: com.google.android.gms.tasks...

I'm searching for a week and tryied different youtube methods.

I would be really gratefull if someone could help me with it. Below is a snap of my Code.

Thanks very much

private void uploadFile() {
        if (mImageUri != null) {
            final StorageReference fileReference = mStorageRef.child(System.currentTimeMillis()
                    + "." + getFileExtension(mImageUri));

            Log.i("test456", mImageUri.toString());

            mUploadTask = fileReference.putFile(mImageUri)
                    .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onSuccess(final UploadTask.TaskSnapshot taskSnapshot) {


                            Handler handler = new Handler();
                            handler.postDelayed(new Runnable(){
                                @Override
                                public void run() {
                                    mProgressBar.setProgress(0);


                                }
                            }, 500);

                            Log.i("test789", fileReference.getDownloadUrl().toString());

                            Toast.makeText(UploadForm.this, "Upload successful", Toast.LENGTH_LONG).show();
                            //test string change Upload too
                            String storageUrl = "";
                            Upload upload = new Upload(mEditTextFileName.getText().toString().trim(),
                                    taskSnapshot.getMetadata().getReference().getDownloadUrl().toString());
                            String uploadId = mDatabaseRef.push().getKey();
                            mDatabaseRef.child(uploadId).setValue(upload);



                          //  FirebaseStorage.getInstance().getReference().child("uploads").getDownloadUrl();

                            final String downloadedUrl = taskSnapshot.getStorage().getDownloadUrl().toString();

                            Uri downloadURL = Uri.parse(mImageUri.toString());
                            String imageUrl = downloadURL.toString();

                            Log.i("test123", String.valueOf(mStorageRef.getDownloadUrl()));

                            Log.i("XXX URL PATH____",taskSnapshot.getMetadata().getReference().getDownloadUrl().toString());



                        }
                    })
                    .addOnFailureListener(new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {
                            Toast.makeText(UploadForm.this, e.getMessage(), Toast.LENGTH_SHORT).show();
                        }
                    })
                    .addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
                            double progress = (100.0 * taskSnapshot.getBytesTransferred() / taskSnapshot.getTotalByteCount());
                            mProgressBar.setProgress((int) progress);
                        }
                    });
        } else {
            Toast.makeText(this, "No file selected", Toast.LENGTH_SHORT).show();
        }
    }

    private void openImagesActivity() {
        Intent intent = new Intent(this, ImagesActivity.class);
        startActivity(intent);
    }
}
Frank van Puffelen
  • 565,676
  • 79
  • 828
  • 807
Phandomas
  • 17
  • 1
  • 6

3 Answers3

1

Could you try this:

fileReference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
    // Download URL 
    String url = uri.toString();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
    // Errors
}
});
Kasım Özdemir
  • 5,414
  • 3
  • 18
  • 35
0

you can also use this way to get the download url.

     mUploadTask = fileReference.putFile(mImageUri)
            .addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
                    if (task.isSuccessful())
                    {
                        task.getResult().getStorage().getDownloadUrl()
                                .addOnSuccessListener(new OnSuccessListener<Uri>() {
                                    @Override
                                    public void onSuccess(Uri uri) {
                                        String downloadUrl= uri.toString();

                                    }
                                });
                    }
                    else
                    {

                    }
                }
            });
mufazmi
  • 1,103
  • 4
  • 18
  • 37
0

ty for the quick respond, but i got a solution :)

with this change in my code it works now !!

  Task<Uri> urlTask = taskSnapshot.getStorage().getDownloadUrl();
                                while (!urlTask.isSuccessful());
                                Uri downloadUrl = urlTask.getResult();

                                //Log.d(TAG, "onSuccess: firebase download url: " + 
                                downloadUrl.toString()); 
                                Upload upload = new Upload(mEditTextFileName.getText().toString().trim(),downloadUrl.toString());

                                String uploadId = mDatabaseRef.push().getKey();
                                mDatabaseRef.child(uploadId).setValue(upload);
    ```
Phandomas
  • 17
  • 1
  • 6