【问题标题】:Cannot resolve taskSnapshot.getDownloadUrl() in android firebase无法解析 android firebase 中的 taskSnapshot.getDownloadUrl()
【发布时间】:2018-09-03 15:07:17
【问题描述】:

这是我将图像上传到 Firebase 存储的代码。它运作良好。但是上传后我无法获取下载网址

        ref.putFile(uri)
                .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                        URL url = taskSnapshot.getDownloadUrl()
                    }
                })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                    }
                })
                .addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
                    }
                });

在 firebase 'com.google.firebase:firebase-storage:16.0.1' 中,它无法解析 getDownloadUrl()。

【问题讨论】:

    标签: android firebase firebase-storage


    【解决方案1】:

    试试这个实现。使用continueWithTask获取下载的url。

    final UploadTask uploadTask = filepath.putFile(uri);   
    uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                                        @Override
                                        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
    
                                            uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
                                                @Override
                                                public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
                                                    if (!task.isSuccessful()) {
                                                        throw task.getException();
    
                                                    }
                                                    // Continue with the task to get the download URL
                                                    return filepath.getDownloadUrl();
    
                                                }
                                            }).addOnCompleteListener(new OnCompleteListener<Uri>() {
                                                @Override
                                                public void onComplete(@NonNull Task<Uri> task) {
                                                    if (task.isSuccessful()) {
                                                        thumb_download_url = task.getResult().toString();
    
    
                                                    }
                                                }
                                            });
    
                                        }
                                    }).addOnFailureListener(new OnFailureListener() {
                                        @Override
                                        public void onFailure(@NonNull Exception e) {
                                        }
                                    });
    

    【讨论】:

    • 好答案!它在我身边运作良好。我可以使用 task.getResult().toString(); 获得正确的 url来自 onComplete 方法。
    【解决方案2】:
    Task<Uri> urlTask = ref.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
        @Override
        public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
            if (!task.isSuccessful()) {
                throw task.getException();
            }
            return ref.getDownloadUrl();
    
        }
        }).addOnCompleteListener(new OnCompleteListener<Uri>() {
            @Override
            public void onComplete(@NonNull Task<Uri> task) {
                if (task.isSuccessful()) {
                    Uri downloadUri = task.getResult();
                    // Downloadable uri
    
                } else {
                     // Handle failures
                }
           }
    });
    

    【讨论】:

    猜你喜欢
    • 2021-07-30
    • 2017-07-08
    • 1970-01-01
    • 2023-02-26
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 2020-09-12
    相关资源
    最近更新 更多