firebase / codelab-friendlychat-android

Firebase FriendlyChat codelab

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

getDownloadUrl is not working

Keown2000 opened this issue · comments

Here is my code:
private void uploadFile() {

    if (mImageUri != null) {
        StorageReference fileReference = mStorageRef.child(System.currentTimeMillis()
                + "." + getFileExtension(mImageUri));
        mUploadTask = fileReference.putFile(mImageUri)
                .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                        Handler handler = new Handler();
                        handler.postDelayed(new Runnable() {
                            @Override
                            public void run() {
                                mProgressBar.setProgress(0);
                            }
                        }, 500);
                        Toast.makeText(MainActivity.this, "Upload successful", Toast.LENGTH_LONG).show();
                        Upload upload = new Upload(mEditTextFileName.getText().toString().trim(),


                                taskSnapshot.getDownloadUrl().toString());


                        String uploadId = mDatabaseRef.push().getKey();
                        mDatabaseRef.child(uploadId).setValue(upload);
                    }
                })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Toast.makeText(MainActivity.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();
    }
}

I have tried to implement get storage in front of it but still does not work..
can anyone help me ?

Determining the download URL requires a call to the server. Because of this, the call to getDownloadUrl() returns a Task that completes when the download URL comes back from the server. You'll need to call addSuccessListener() on it to wait for it to complete. See the documentation here and this answer on Stack Overflow.