java - Firebase 上传监听器永远不会被解雇

标签 java android firebase firebase-storage

我正在构建一个 Android 应用程序,用于将照片从设备上传到 Firebase 存储。图像已正确上传,但我无法让上传监听器工作。我已经浏览了文档here并实现了完全相同的解决方案:

System.out.println("Starting upload");
Uri file = Uri.fromFile(new File("myPath"));
StorageReference Ref = storageRef.child("images/"+file.getLastPathSegment());
uploadTask = Ref.putFile(file);

// Register observers to listen for when the download is done or if it fails
uploadTask.addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception exception) {
        // NEVER EXECUTES
           System.out.println("upload failed");

    }
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
        // NEVER EXECUTES
           System.out.println("upload succeeded");
    }
});

我可以看到第一行打印“开始上传”。但仅此而已。如果我添加 OnCompleteListener 也是如此,但这里省略了它。

出了什么问题?

最佳答案

尝试 OnCompleteListener

uploadTask = Ref.putFile(file);
uploadTask.addOnCompleteListener(new OnCompleteListener<Uri>() {
    @Override
    public void onComplete(@NonNull Task<Uri> task) {
        if (task.isSuccessful()) {
            System.out.println("upload succeeded");
        } else {
            System.out.println("upload failed");
        }
    }
});

关于java - Firebase 上传监听器永远不会被解雇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57342325/

相关文章:

android - 尽管使用相同版本,所有com.android.support库都必须使用完全相同的版本规范

android - 单一 Intent 共享音频和文本

Firebase crashlytics 没有记录所有崩溃

java - 如何使用 Apache Camel 实现直通 JAX-RS 代理?

java - GCJ (jc1.exe) 问题

java - 如何使用 Tensorflow 1.0 Java API 创建/初始化变量

安卓| Dagger 2.根据条件将不同的子类注入(inject)Fragment

java - 如何在加入 HQL 时应用 2 个条件

javascript - 如何处理 Firebase Cloud Functions 中的错误 JSON?

node.js - Firebase 函数找不到模块 'cycle'