首页 > 解决方案 > taskSnapshot.getDownloadUrl() 方法不起作用

问题描述

private void uploadImageToFirebaseStorage() {
    StorageReference profileImageRef =
        FirebaseStorage.getInstance().getReference("profilepics/" + System.currentTimeMillis() + ".jpg");

    if (uriProfileImage != null) {
        progressBar.setVisibility(View.VISIBLE);
        profileImageRef.putFile(uriProfileImage)
            .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(@NonNull UploadTask.TaskSnapshot taskSnapshot) {
                    progressBar.setVisibility(View.GONE);
                    profileImageUrl = taskSnapshot.**getDownloadUrl**().toString();
                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    progressBar.setVisibility(View.GONE);
                    Toast.makeText(ProfileActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
                }
            });
    }
}

taskSnapshot.getDownloadUrl()方法不起作用在它下面出现红线

标签: androidfirebase-storage

解决方案


编辑:请参阅此评论,了解为什么此答案中的方法不起作用:

firebaser here这个答案是错误的。虽然它起初看起来可以工作(因为它编译),但结果getDownloadUrl().toString()不是下载 URL,而是Task对象的字符串表示。如需更好的答案,请参阅stackoverflow.com/a/55503926Firebase 文档中的示例

下面的原始答案...


Firebase Storage API版本 16.0.1 中,使用 taskSnapshot 对象的 getDownloadUrl() 方法已更改。现在你可以使用,

taskSnapshot.getMetadata().getReference().getDownloadUrl().toString()

从 Firebase 存储中获取下载 url。


推荐阅读