错误:找不到com.google.firebase.storage.UploadTask.TaskSnapshot类型的符号方法getDownloadUrl()

Kar*_*ran 14 android firebase firebase-storage

在gradle更新之前一切正常,但稍后会弹出这个错误.我已经提到了官方文档,它提供了相同的代码. 不接受getDownloadUrl()方法

我添加了最新的正确依赖项,并且gradle sync成功. 应用程序/的build.gradle

这是firebase文档中提供的示例代码,与我的相同. Firebase助手

即使所有必需的东西都存在,我也无法理解可能出现的问题.坚持这2天,请帮忙!

Ana*_*nth 11

正如Doug指出的那样,UploadTask.getDownloadUrl()已弃用,因此请使用 StorageReference.getDownloadUrl().

但StorageReference.getDownloadUrl()返回Task,必须异步处理,你不能Uri downloadUrl = photoRef.getDownloadUrl().getResult();其他的事情你会得到java.lang.IllegalStateException: Task is not yet complete

因此,像这样异步处理它

 photoRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                    @Override
                    public void onSuccess(Uri uri) {
                        Uri downloadUrl = uri;
                        Toast.makeText(getBaseContext(), "Upload success! URL - " + downloadUrl.toString() , Toast.LENGTH_SHORT).show();
                    }
                });
Run Code Online (Sandbox Code Playgroud)


Tha*_*van 8

如果您有一个“ image_uri”并将其放入Firebase存储中,则此代码将为您提供帮助。

private StorageReference storageReference= FirebaseStorage.getInstance().getReference();

 final StorageReference ref = storageReference.child("picture.jpg");
    ref.putFile(image_uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
            ref.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                @Override
                public void onSuccess(Uri uri) {
                    final Uri downloadUrl = uri;


                }
            });
Run Code Online (Sandbox Code Playgroud)


Dou*_*son 5

UploadTask.getDownloadUrl()已弃用。请改用StorageReference.getDownloadUrl()

  • 弃用这一点是正确的,但在旧版本的应用程序中使用这些从未引起问题,应用程序从未崩溃!考虑一个弃用示例,开发人员仍然使用“ProgressDialog”,即使它被弃用它仍然可以正常工作。那是我的观点! (2认同)

Pab*_*rra 5

getDownloadUrl 不复存在。

因此,新方法是:

final StorageReference ref = storageRef.child("images/mountains.jpg");
uploadTask = ref.putFile(file);

Task<Uri> urlTask = 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 ref.getDownloadUrl();
    }
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
    @Override
    public void onComplete(@NonNull Task<Uri> task) {
        if (task.isSuccessful()) {
            Uri downloadUri = task.getResult();
        } else {
            // Handle failures
            // ...
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

Firebase文档